🎃
FireStoreのbatch処理 (Vue, Nuxt, Typescript)
FireStoreのbatch処理
大量のfireStoreのデータを一括で更新処理する必要があり、今回batch処理をする運びとなりました。備忘録としてカキコ
実際にはこちらの方の記事がわかりやすかったです。
もっと簡単にした処理を紹介して頂いてましたが、僕としては下記の方法が分かりやすくかつメンテしやすいという意味で採用しました。
import {
getFirestore,
collection,
addDoc,
updateDoc,
doc,
writeBatch,
} from 'firebase/firestore'
const db = getFirestore()
const updateAll = async (updateList: 型[]) => {
if (updateList.length === 0) {
return null
}
const limit = 500
let count = 0
let batch = writeBatch(db)
//一括新規登録
for (const list of updateList) {
const docRef = doc(collection(db, 'コレクション名'), コレクション名.documentId)
batch.update(docRef, list!)
count++
// 500件の場合
if (count >= limit) {
await batch.commit()
// 新たなバッチを作成しリセット
batch = writeBatch(db)
// カウントをリセット
count = 0
}
}
// for文の処理が終了した場合残りを処理
if (count > 0) {
await batch.commit()
}
}
上記のtsファイルを利用したい場面で使えばいいだけになります。
500件の制限があるので制限を超える場合は初期化する必要があります。
そこだけ注意点です。
Discussion