1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

firestoreのindexを別のprojectへコピーする

Last updated at Posted at 2023-12-07

3行まとめ

  • 環境分けるために複数のfirebase projectを運用してる時、firestoreのindex同期化が面倒
  • firebase cliを利用し、開発のprojectで firebase init →本番projectで firebase deploy すれば解決
  • firebase cliを使うdirectoryは仮で作っても、既存に使っているところでも良い

本文

firebaseを利用してプロダクトを開発する時、
開発環境と本番環境用でそれぞれ別のprojectを作ることがあります。

firestoreを使っている場合は
collectionが増えるとruleの、
queryが増えるとindexの更新が必要になる訳ですが…
ruleは兎も角、indexの更新が面倒なんですよね。

開発環境の方は簡単です。
とりあえずquery作って、動作させればwarning logが流れるので、
そのlogが発行してくれるlinkを踏むとconsoleが開き、勝手に必要なindexを作ってくれます。
これもindex一個に付き一度行う必要があるので、数が多ければ面倒な作業には変わりませんが。
問題は本番の方。
流石に本番デプロイの後に同じことをする訳にも行きません。
なので開発環境で発行したindexを持ってくることができれば良いですが…
firebase consoleとcliで調べてみても現在のindexを丸ごと取る方法は見つからず。
(実はあるようでしたら是非ご教示お願いします!)

それで色々試してみた結果、以下の方法で落ち着きました。

  1. firebase cliをインストール
  2. 開発環境でindexを作っておく
  3. 適当なdirectoryで firebase init
  4. firestore だけ選択して初期化を進める
  5. 選択するprojectはもちろん開発環境
  6. 名前を変えてなければ firestore.indexes.json が生成されているはずなので、中身が最新であることを確認
  7. firebase use {本番project}
  8. firebase deploy

もしfirebase cliでのdeployを行ったことがあるdirectoryがある場合は
普通にそこで作業しても大丈夫です。
firebase use {開発環境} の後、何度 firebase init を実行しても
都度開発環境の最新を持ってきてくれます。
.firebaserc firebase.json が既に存在してたら上書きされないか…という心配を個人的にはしてましたが
現在は特にそのようなこともありません。

indexのためだけに毎回これをやるのも若干違う感じはしますが…
現状では、多分これが一番楽だと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?