はじめに
Firebase Firestore は Google が提供する NoSQL データベースです。
Node.js サーバーから Firestore を使う場合は firebase-admin SDK を利用します。
本記事では、以下の基本操作を網羅的に紹介します。
- 初期化
- ドキュメントの作成 (add / set)
- ドキュメントの更新 (update)
- ドキュメントの取得 (get)
- 条件検索 (where)
- ドキュメントの削除 (delete)
⚠️ 注意: firebase-admin にはフロントエンド SDK のような onSnapshot(リアルタイムリスナー)機能はありません。リアルタイム更新が必要な場合はフロントエンド側で Web SDK を利用してください。
環境準備
npm install firebase-admin
- Firebase コンソール → プロジェクトの設定 → サービスアカウント
- 「新しい秘密鍵を生成」から JSON をダウンロード
- プロジェクト直下に配置 (例: serviceAccountKey.json)
firebase.js
import admin from "firebase-admin";
import serviceAccount from "./serviceAccountKey.json" assert { type: "json" };
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
});
export const db = admin.firestore();
1. ドキュメントの作成 (add / set)
自動 ID を振る場合 (add)
const docRef = await db.collection("users").add({
name: "Alice",
age: 25,
});
console.log("Document ID:", docRef.id);
ID を指定する場合 (set)
await db.collection("users").doc("user1").set({
name: "Bob",
age: 30,
});
2. ドキュメントの更新 (update)
既存フィールドのみを更新します。
await db.collection("users").doc("user1").update({
age: 31,
});
3. ドキュメントの取得 (get)
単一ドキュメント
const doc = await db.collection("users").doc("user1").get();
if (doc.exists) {
console.log("Data:", doc.data());
} else {
console.log("No such document!");
}
コレクション全体
const snapshot = await db.collection("users").get();
snapshot.forEach((doc) => {
console.log(doc.id, " => ", doc.data());
});
4. 条件検索 (where)
複数条件のクエリも組み合わせ可能です。
const snapshot = await db
.collection("users")
.where("age", ">=", 20)
.where("age", "<=", 30)
.get();
snapshot.forEach((doc) => {
console.log(doc.id, " => ", doc.data());
});
5. ドキュメントの削除 (delete)
await db.collection("users").doc("user1").delete();
まとめ
Node.js サーバーから Firestore を操作する際は、firebase-admin を利用します。
基本操作は以下の通りです。
- 作成: add(自動 ID)、set(手動 ID)
- 更新: update
- 取得: get(単一 or コレクション)
- 検索: where
- 削除: delete
バックエンドで Firestore を扱うときは、認証やセキュリティルールを考慮せずに操作できるため、管理ツールや API サーバー側での利用に便利です。