Firebase Admin SDKをインストールする方法 & FirestoreでCRUD操作
Firebase Admin SDKのインストールから実装まで、完全ガイド!サーバーサイドからFirebaseを自在に操る方法を解説。セキュリティルールを超えた管理者権限でのDB操作や、環境変数を使った安全な実装方法まで、実践的なサンプルコード付きで紹介します。
Firebase Admin SDKをインストールする方法を紹介します。
環境
- Express, Node.js v20
- Render.com
Firebase Admin SDKとは
Firebase Admin SDKとは、Firebaseの主要な機能をサーバーサイドから利用するためのSDK(Software Development Kit)です。
これにより、バックエンドからFirebase Authentication, Firestore, Cloud Storageなどの機能を使うことが可能になります。
また、もう1つの特徴として、セキュリティルールを無視して(=完全な管理者権限で)Firestore操作することができます。どうしてもセキュリティルールの初期設計上操作できないものがある場合にはAdmin SDKを利用してバックエンドでDB操作を実行するといったこともできます。
インストール
サービスアカウントJSONを取得する
サービスアカウントの秘密鍵をダウンロードする必要があります。
- Firebaseコンソールにアクセスし、作成したプロジェクトに移動する
- 「プロジェクトの設定」をクリックし、「サービスアカウント」タブへ移動
- 「新しい秘密鍵の生成」ボタンをクリックする
- 表示内容を確認し、「キーを生成」ボタンをクリックする
- 自動でJSONファイル(秘密鍵)がダウンロードされる
npm install
Node.jsで初期化する
Node.jsで初期化する際、JSONファイルをそのまま読み込むのでも良いのですが、私の環境では面倒だったので、環境変数を使うように以下のように実装しました。
この実装方法の注意点:
- 環境変数の管理を厳重にすること(.env)
- “FIREBASE”は予約語だそうで、前にTHEと付与すること(もちろん何でもよいです)
- “private_key”は改行の文字の事情で、最後に
.replace(/\\n/g, '\n')
を付与すること
これで、FireabseプロジェクトをNode.jsで操作することができます。
ちなみに、AuthやFirestoreを操作するには、以下のようなコードを追加します。
変数のfirebaseApp
にはもう1つ前のコードのinitializeAppの返り値を代入しておく必要があります。
FirestoreでドキュメントのCRUD操作をする
CRUD操作のサンプルコードを紹介します。
どの例もコレクションcities
に都市のドキュメントが複数保存されているような場合を想定しています。
ドキュメントの作成、更新の操作
参考ページ:https://firebase.google.com/docs/firestore/manage-data/add-data?hl=ja
ドキュメントを作成する
set()
を利用すれば新たにドキュメントを作成できます。この際、IDを自ら指定する必要があります。
ドキュメントを作成する(IDは自動生成させる場合):
IDを自動生成させる場合には add()
を使います。
ドキュメントを更新する
update()
を利用するとドキュメントを更新できます。
ドキュメントの取得の操作
1つのドキュメントを取得する
get()
を利用してドキュメントを取得できます。
docを取得した際、 doc.exists()
を使うとどのドキュメントが存在しているかどうかをbooleanでチェックできます。
複数のドキュメントを取得する
where()
で条件を指定して get()
を利用することで条件に一致する複数のドキュメントを取得できます。 where()
を使わない場合には全てのドキュメントを取得できます。
「検出 インデックス未登録」の解決法をGoogle社員が解説!インデックスに悩む人は必見
Search Consoleで表示される「検出 - インデックス未登録」問題について、Google社員ジョン・ミューラー氏が解説した3つの解決策(URL生成、内部リンク、ページ品質/数)をまとめました。筆者の見解も加筆。
iPhoneでのみ起きるスクロールバーが表示されないCSS問題の解決方法
iPhoneやiPadでスクロールバーが表示されない・見えない問題を解決!Appleデバイス特有のスクロールバー問題をCSSで簡単に修正する方法を解説。フォームやテキストエリアの使いやすさを改善する実践的な解決策を紹介します。