😸
【超初心者向け】Firebaseでデバッグを始めてFirestoreに登録したデータが消えて絶望したあなたへ
辛いですよね。
こんにちは、ワニかず@40歳 出戻りエンジニアです。
私も絶望した一人なのですが、
Firebaseの起動時にオプションを設定しておく必要があった、
ということで、その手順などをまとめました。
オプション無しだと?
Firebase Emulatorは通常、メモリ上でのみデータを保持するため、エミュレータを停止すると全てのデータは消去されます。
つまり、以下のようなコマンドだけで起動した場合:
firebase emulators:start --only functions,firestore,auth
エミュレータを停止すると、その時点で:
- Firestoreに登録したデータ
- 作成した認証ユーザー
- その他の状態
全てが失われます。
手順
Firebase Emulatorのデータをエクスポート/インポートのオプションを指定して
起動すると、データの消失を回避できます。
エクスポートとインポートを組み合わせた起動:
--import=./firebase-data --export-on-exit=./firebase-data
というオプションを指定して起動します。
具体的には、
firebase emulators:start --only functions,firestore,auth --import=./firebase-data --export-on-exit=./firebase-data --inspect-functions
とした場合、
- functions, firestore, auth のエミュレータが起動
- 起動時に
firebase-data
からデータをインポート - 終了時に
firebase-data
にデータをエクスポート - Cloud Functions のデバッグが可能 (--inspect-functions)
これで開発作業中のデータが保持され、かつCloud Functionsのデバッグも行える環境が整います。
このコマンドでは:
-
--import=./firebase-data
: 起動時にデータをインポート -
--export-on-exit=./firebase-data
: 終了時に自動的にデータをエクスポート
注意点:
- エクスポートディレクトリは事前に作成しておく必要はありません
- エクスポートされるデータには、Firestore、Authentication、Realtime Databaseなどの状態が含まれます
-
--export-on-exit
を使用すると、Ctrl+Cでエミュレータを正常終了した時のみエクスポートされます
これらのコマンドを使用することで、エミュレータのデータを永続化できます。
おしまいに
マイクラで全ロスしたときと同じような喪失感でした。
Discussion