firestoreのCRUD操作をまとめた

Firestore

firestoreを使うようになったので基本的なデータの操作をまとめました。

ここでは追加、取得、更新、削除の簡単なCRUD操作だけを紹介し、

サブコレクションやページネーションは扱いません。ゆくゆく追加していこうと思います。

追加

追加にはaddメソッドとsetメソッドがあります。

add

addメソッドはドキュメントIDを自動生成してusersコレクションにオブジェクトを保存します。

import * as admin from "firebase-admin";

admin.firestore().collection("users").add({
    name: "田中",
    age: "30",
    gender: "female",
})

set

setメソッドでもaddと同じことができます。docメソッドでドキュメントIDを指定できます。

import * as admin from "firebase-admin";

// addと同じ
admin.firestore().collection("users").doc().set({
    name: "田中",
    age: "30",
    gender: "female",
})

// ドキュメントIDを指定できる
admin.firestore().collection("users").doc("tanaka").set({
    name: "田中",
    age: "30",
    gender: "female",
})

取得

get

getメソッドでusersコレクションの全ドキュメント、または指定したドキュメント1件を取得できます。

import * as admin from "firebase-admin";

// コレクションの全ドキュメントを取得
const querySnapshot = await admin.firestore().collection("users").get()

// 指定したtanakaのドキュメントだけを取得
const userDoc = await admin.firestore().collection("users").doc("tanaka").get()

更新

更新にはupdateメソッドとsetメソッドがあります。

update

updateメソッドはドキュメントIDを指定してフィールドを更新します。

以下の書き方だとusersコレクションのドキュメントIDがtanakaのオブジェクトのgenderのみを更新します。

import * as admin from "firebase-admin";

admin.firestore().collection("users").doc("tanaka").update({
    gender: "male",
})

このとき存在しないドキュメントIDを引数に渡すとエラーになります。

更新対象のドキュメントに存在しないフィールドをupdateに渡すと追加してくれます。

set

setメソッドでもドキュメントを更新できますが注意が必要です。

setメソッドの第二引数{ merge: "true" }を指定しないとgender以外のフィールドが消えます。

import * as admin from "firebase-admin";

admin.firestore().collection("users").doc("tanaka").set({ gender: "male" }, { merge: "true" })

削除

delete

deleteメソッドはupdateメソッドと同様に指定したドキュメントを削除します。

存在しないドキュメントIDを渡すとエラーになります。

updateと組み合わせることで指定したドキュメントの指定したフィールドだけを削除することもできます。

import * as admin from "firebase-admin";
import { FieldValue } from "firebase-admin/firestore";

// 指定したtanakaのドキュメントだけを削除
admin.firestore().collection("users").doc("tanaka").delete()

// 指定したtanakaのドキュメントのgenderフィールドだけを削除
admin.firestore().collection("users").doc("tanaka").update({
    gender: FieldValue.delete(),
})

まとめ

firestoreの基本的なCRUD操作のみを記載しました。

同じメソッドでもコレクションに対して行うのかドキュメントに対して行うのかで、取得できる内容が変わります。

コメント

タイトルとURLをコピーしました