Firebase Local Emulator SuiteのFirestoreに外部のスクリプトからアクセスしてモックデータを突っ込む


こちらに非常に良い記事があります。まだ読んでおられない方は是非!

環境変数のFIRESTORE_EMULATOR_HOSTに適切な値を設定することで外部のスクリプトからエミュレーターにアクセスできます。(他言語のSDKでも同様だそうです)

import { Firestore } from '@google-cloud/firestore';

Object.assign(process.env, {
  GCLOUD_PROJECT: '[プロジェクトID]', 
  FIRESTORE_EMULATOR_HOST: '0.0.0.0:[Firestoreのポート番号]'
});

const firestore = new Firestore();

(async () => {
  // admin権限が必要な操作も可能
  console.log(await firestore.listCollections());
})();

なお、GCLOUD_PROJECTに関しては環境変数を使わなくても適当なメソッドで代替できます。実際に存在するプロジェクトIDである必要はないことに注意です!Firestoreのエミュレータは並列実行しても1インスタンスなので、プロジェクトIDが被ると共通の領域が使用されるようになります。

これに気づくまでに数時間を要しましたが、冒頭にも書いた通り、既に偉大な先人の方が記事を書かれていたようです。こちらの記事は十分に読み込んだつもりになっていましたがまだまだ甘かった・・・。