- 投稿日:2020-01-25T22:50:35+09:00
npm で全ての package をアップデートする
- 投稿日:2020-01-25T16:14:45+09:00
Node.js で Cloud Firestore のデータを削除 (Delete)
こちらで作成したデータのひとつを削除します。
Node.js で Cloud Firestore のデータを作成 (Create)firestore_delete.js#! /usr/bin/node // --------------------------------------------------------------- // firestore_delete.js // // Jan/25/2020 // // --------------------------------------------------------------- console.error ("*** 開始 ***") const key_in=process.argv[2] console.log (key_in) const admin = require('firebase-admin') admin.initializeApp({ credential: admin.credential.applicationDefault() }) const db = admin.firestore() try { db.collection('cities').doc(key_in).delete() } catch (error) { console.error ("*** error *** delete ***") console.error (error) } console.error ("*** 終了 ***") // ---------------------------------------------------------------実行コマンド
export GOOGLE_APPLICATION_CREDENTIALS="***.json" ./firestore_delete.js t0924
- 投稿日:2020-01-25T16:11:08+09:00
Node.js で Cloud Firestore のデータを更新 (Update)
こちらで作成したデータを更新します。
Node.js で Cloud Firestore のデータを作成 (Create)firestore_update.js#! /usr/bin/node // --------------------------------------------------------------- // firestore_update.js // // Jan/25/2020 // // --------------------------------------------------------------- console.error ("*** 開始 ***") const key_in=process.argv[2] const population_in=process.argv[3] console.log (key_in + "\t" + population_in) const today = new Date () var ddx = (1900 + today.getYear ()) + "-" + (today.getMonth () +1) ddx += "-" + today.getDate () console.log(ddx) const admin = require('firebase-admin') admin.initializeApp({ credential: admin.credential.applicationDefault() }) const db = admin.firestore() try { let cityRef = db.collection('cities').doc(key_in) cityRef.update({population: population_in, date_mod: ddx}) } catch (error) { console.error ("*** error *** update ***") console.error (error) } console.error ("*** 終了 ***") // ---------------------------------------------------------------実行コマンド
export GOOGLE_APPLICATION_CREDENTIALS="***.json" ./firestore_update.js t0923 91456200
- 投稿日:2020-01-25T16:07:45+09:00
Node.js で Cloud Firestore のデータを読む (Read)
こちらで作成したデータを読みます。
Node.js で Cloud Firestore のデータを作成 (Create)firestore_read.js#! /usr/bin/node // --------------------------------------------------------------- // firestore_read.js // // Jan/25/2020 // // --------------------------------------------------------------- console.error ("*** 開始 ***") const admin = require('firebase-admin') admin.initializeApp({ credential: admin.credential.applicationDefault() }) const db = admin.firestore() db.collection('cities').get() .then((snapshot) => { snapshot.forEach((doc) => { // console.log(doc.id, '=>', doc.data()) var unit_aa = doc.data() var out_str = doc.id + "\t" out_str += unit_aa["name"] + "\t" out_str += unit_aa["population"] + "\t" out_str += unit_aa["date_mod"] console.log (out_str) }) console.error ("*** 終了 ***") }) .catch((err) => { console.log('Error getting documents', err); }) // ---------------------------------------------------------------実行コマンド
export GOOGLE_APPLICATION_CREDENTIALS="***.json" ./firestore_read.js
- 投稿日:2020-01-25T16:02:36+09:00
Node.js で Cloud Firestore のデータを作成 (Create)
ライブラリーのインストール
sudo npm install firebase-admin --savefirestore_create.js#! /usr/bin/node // --------------------------------------------------------------- // firestore_create.js // // Jan/25/2020 // // --------------------------------------------------------------- function add_data_proc(db,key,name,population,date_mod) { let tt_ref = db.collection('cities').doc(key) tt_ref.set({ 'name': name, 'population': population, 'date_mod': date_mod }) } // --------------------------------------------------------------- console.error ("*** 開始 ***") const admin = require('firebase-admin'); admin.initializeApp({ credential: admin.credential.applicationDefault() }) const db = admin.firestore(); add_data_proc(db,'t0921','宇都宮',81235,'1950-9-24') add_data_proc(db,'t0922','小山',94235,'1950-2-15') add_data_proc(db,'t0923','佐野',71395,'1950-5-28') add_data_proc(db,'t0924','足利',35421,'1950-7-8') add_data_proc(db,'t0925','日光',61948,'1950-1-11') console.error ("*** 終了 ***") // ---------------------------------------------------------------実行コマンド
export GOOGLE_APPLICATION_CREDENTIALS="***.json" ./firestore_create.js次のバージョンで確認しました。
$ node --version v13.7.0
- 投稿日:2020-01-25T14:10:24+09:00
Node.jsでAWS ElasticSearchへのHTTP リクエストの署名
はじめに
情報保護を難しくなっている現代社会では、セキュリティ対応はますます重要になってきています。
Cloud技術の進化によって、セキュリティ対応しやすくなる部分もあります。AWSのElasticeSearchサービスへのHTTP リクエストの署名方法を簡単にまとめてみます。
1. AWS SDKのライブラリを使う
AWSのドキュメントにある通り、署名したリクエストを送信できますが、検索のクエリなどはちょっと手間ですね。
node.jsvar credentials = new AWS.EnvironmentCredentials('AWS'); var signer = new AWS.Signers.V4(request, 'es'); signer.addAuthorization(credentials, new Date()); var client = new AWS.HttpClient(); client.handleRequest(request, null, function(response) { // .... }2. aws-elasticsearch-connectorモジュールを使う
Node.jsからElasticSearchへアクセスするには、ElasticSearchクライアントを使うと検索などに便利です。
aws-elasticsearch-connectorを利用して署名も簡単にできます。2.1 aws-elasticsearch-connectorインストール
npm install --save aws-elasticsearch-connector @elastic/elasticsearch aws-sdk
2.2 profile利用例
node.jsconst AWS = require('aws-sdk'); const { Client } = require('@elastic/elasticsearch'); const { AmazonConnection } = require('aws-elasticsearch-connector'); // Load AWS profile credentials AWS.config.update({ profile: 'my-profile' }); const client = new Client({ node: 'my-elasticsearch-cluster.us-east-1.es.amazonaws.com', Connection: AmazonConnection });2.3 .envにアクセスキー、シークレットキー利用例
AWS_ACCESS_KEY_ID=foo # alias: AWS_ACCESS_KEY AWS_SECRET_ACCESS_KEY=bar # alias: AWS_SECRET_KEY AWS_SESSION_TOKEN=xxx //optionalnode.jsconst { Client } = require('@elastic/elasticsearch'); const { AmazonConnection } = require('aws-elasticsearch-connector'); const client = new Client({ node: 'my-elasticsearch-cluster.us-east-1.es.amazonaws.com', Connection: AmazonConnection, });参考URL:https://github.com/compwright/aws-elasticsearch-connector#readme
2.4 検索結果
node.jslet searchResult = await client.search({ index: 'xxx_index', body: { //... }); // ヒットしたデータ let hits = searchResult.body.hits.hits; // ヒットしたデータ数 let hitsCount = searchResult.body.hits.total;ElasticSearchのクライアントAPI:
https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/client-usage.html以上
- 投稿日:2020-01-25T13:56:31+09:00