基本的にはこちらの記事通りにいろいろやればいい。
前提
こちらの記事の続き。
- Emulator環境
- テーブル作成済み
- データInsert済み
準備
作業場の作成
まあどこでもいいのですが、以下のようにしました。
cd
mkdir spanner-node-test
cd spanner-node-test
touch index.js
モジュールのインストール
spannerにアクセスするためには@google-cloud/spannerをインストールするようです。
npm install @google-cloud/spanner
実装
コードを書く
いろいろな書き方ができるみたいですが、一旦SQLを使った方法を試してみます。
index.js
const { Spanner } = require("@google-cloud/spanner");
(async () => {
//定数設定(環境依存)
const projectId = "dev-test";
const instanceId = "test-instance";
const databaseId = "testdb";
const spanner = new Spanner({
projectId: projectId,
});
const instance = spanner.instance(instanceId);
const database = instance.database(databaseId);
const query = {
sql: 'select * from members',
}
try {
const [rows] = await database.run(query);
rows.forEach(async row => {
const json = await row.toJSON();
console.log(`id:${json.id} name:${json.name} age:${json.age}`);
});
} catch (err) {
console.error("ERROR", err);
} finally {
database.close();
}
})();
実行
実行してみます。動いたようです。
node index.js
id:1 name:hoge age:10
メモ
以下のようにcredential系のエラーがでた場合は、
ERROR Error: Could not load the default credentials.
下記のように環境変数を設定すればOK。
export SPANNER_EMULATOR_HOST=localhost:9010