狐好きぷろぐらまー

狐好きプログラマーのブログです。

【Firebase】Firestoreのデータをテキスト形式でローカルに保存する手順【Firestore】

雑談

お久しぶりです。 pregum_foxです。

大分 サボっていたので お休みしていたので、簡単な記事でリハビリしながらブログを再開したいとおもいます。

最近は、Flutter, Firebase, Swift, Kotlin, TypeScriptあたりを触っているので、その辺りの記事が多くなると思います。

では目次です。

背景

FirestoreのFirestoreを使って開発することがありますが、その際にできているデータをテキスト形式で取得したいことがありますが、今まではスクリプトを書いて取得していてただダウンロードするだけで時間がかかっていました。

gcloud コマンドでfirestoreのデータをエクスポートする機能はありますが、人の目では見られない形式なのでEmulatorでみるか、もしくは別のツールを使う必要があります。

良いツールがないか探していたところ、node-firestore-import-export#exportというnpmパッケージを見つけたので、使い方を備忘録として残しておきます。

www.npmjs.com

使い方

セットアップ

node-firestore-import-exportのインストール

まずはnpm(node.jsのパッケージ管理ツール)を使えるようにする必要があります。

npm インストール 手順 などで見つかった記事を参考にnpm をインストールしてください。

ターミナルで npm -v コマンドを打ってバージョンが表示されればインストールできています。


その後、ターミナル上でどこでも使えるように、npm install -g node-firestore-import-export でグローバルにnode-firestore-import-export をインストールします。

Google Cloud Account Credentialsの取得

下記画像のようにFirebaseの歯車ボタン > 「プロジェクトの設定」> 「サービスアカウント」タブ から「新しい秘密鍵の生成」でファイルを取得し、作業ディレクトリにcredentials.jsonという名前で保存します。

秘密鍵の取得方法

コマンド

Firestoreに保存されているデータをbackup.json という名前で保存するコマンド

※ コマンドを叩くディレクトリにcredentials.json がある想定です。

npx -p node-firestore-import-export firestore-export -a credentials.json -b backup.json

特定のコレクションだけ取得するコマンド

e.g.) usersコレクションだけを取得したい場合

npx -p node-firestore-import-export firestore-export -a credentials.json -b backup.json -n users

でOK

EmulatorのFirestoreのデータを取得したい場合は、FIRESTORE_EMULATOR_HOST環境変数をexportするといけるそう(要検証)

github.com

下記のような感じ

export FIRESTORE_EMULATOR_HOST=0.0.0.0:8081

参考URL

node-firestore-import-export - npm