こんにちは。
株式会社エス・スリーのスタッフです。
前回、前々回に引き続き、Firebase WEBSDK ver.9への対応について。
今回は、バッチ部分のリファクタリングについてです。
Firebase Firestoreの一括書き込み処理には、トランザクション処理とバッチ書き込みという2種類があります。
トランザクションは、良くある連番処理などに使います。
Firestoreで管理している(現在の)番号を読み取ってプラス1して更新、などという場合です。
バッチ書き込みの方は、読取の必要が無い場合、一括で書き込みたい場合に使います。
こちらは例えば、親と子で保存先のコレクションを分けている場合に使うのかなと思っています。
(正直分けないほうが良い気もしますが…)
前置きが長くなりましたが、後者のバッチ処理において、新しくデータを書き込む場合に自動生成されたIDで書き込みたいとき、
バッチ書き込みのマニュアルには例が無かったので今回例を記載してみたいと思います。
import { getFirestore, writeBatch, doc, collection } from "firebase/firestore";
const db = getFirestore();
const batch = writeBatch(db);
let nRef = doc(collection(db, "testdb")); //testdbへのドキュメントへの参照(自動生成したIDで)
batch.set(nRef, {(key : value)}; //上の参照へ書き込み
batch.commit()
.then(async ()=> {
//バッチ書き込み後
});
最後までお読みいただき、ありがとうございました。