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操作のみを記載しました。
同じメソッドでもコレクションに対して行うのかドキュメントに対して行うのかで、取得できる内容が変わります。
コメント