Firebaseがversion9になってDB接続が大変だったのでメモ残し
FireBaseがバージョンアップしてデータベース接続が大きく変更に
最近は仕事外でもアプリを作成して不労所得が欲しいと思っているWEBエンジニアのToAです。
今回はFirebaseのバージョンアップで作成しているソフトのバージョンアップに時間がかかったのでこの悲劇を繰り返させないために記事に残していこうと思います。
どうやらこのバージョンアップ(8⇒9)は2021年の8月に実施されたみたいですね。バージョンアップに伴い、データベース周りのアクセス方法が変わりました。久しぶりにソースコードみて最新版のバージョンアップにアップしたらエラー出てきてまじで焦りましたよ。(2021年11月中頃)
それでは早速ですが変更点を確認していきましょう。なお、使っているのは以下の条件です。
- TypeScript
- Cloud Firestore
変更点は以下の内容です。
ドキュメントを取得する方法が少し変わっていますよね。特にthenによる取得ではなく、async,awaitを使うようになりました。まぁたしかにこちらの方がモダンな仕組みかも知れませんが変更を強制されるのは個人開発者にとっては少し面倒ですね。
これだとAWSとかの方が長い目で見ると楽かも知れません。仕事ではAWSを使うかなぁ・・・。
で、このバージョン9のサンプルコードがGithubで公開されているんですがこれまた分かりにくいんですよねぇ・・・。
これ見ると分かるんですがこれそのままコピペするとばっちりエラーができます。当たり前なんですがawaitの部分で「asyncがないよ」と出てきます。
そりゃそうなんだけどなんか理不尽やでぇ・・・。
そのため解決策としては以下のような適当な関数を作ってそのなかに入れましょう。
なんかアップデートでinitializeAppをすべてのモジュールで呼び出す必要とか出てきました?なんかやらないと怒られたんですよね・・・初期化できてないぞみたいな・・・。
まぁ私はdbconn.tsxみたいなファイルを用意して、アプリに必要なDB接続関係は全てそこに保存してexportしてます。個人開発なんでそこまで綺麗にする気もないんですけどね。
ちなみにquerySnapshotでmapやfilterを使いたいんですが対応してくれませんかGoogleさん・・・。
まぁ私のような経験の浅いWEBエンジニアにはこの程度の変更でも数時間かかりましたよ。最初はずっとバージョンの問題だと思っていましたからね。
まぁこの記事はここまでにしようと思います。
私のサイトでは他にもNext.jsのアプリを作って公開するまでの流れを書いていたりするので興味があればこちらのリンクから見て行ってもらえればと思います。