Col*_*ore 2 javascript firebase google-cloud-platform google-cloud-firestore
我有一个网络应用程序,用户可以通过表单输入创建多个 firestore 文档。我正在成功使用 batch.commit() 将这些对象添加到集合中。
arrayOfObjectsFromForm.forEach((object) => {
var docRef = db.collection("CollectionName").doc();
batch.set(docRef, object);
})
await batch.commit().then(() => {
console.log("committed batch write to firestore!")
return alert("success")
});
Run Code Online (Sandbox Code Playgroud)
但是,在batch.commit()成功后,如果用户再次填写表单以创建另一组要写入的文档,则会出现错误:调用commit()后,无法再使用写入批处理。有没有办法连续多次调用batch.commit()?我认为在 batch.commit() 之后返回一个值会“清理”该函数以再次使用它,但仍然出现错误。
听起来您正在重用batch已提交的同一对象,这确实是不允许的。
提交第一个批处理对象后,您需要创建一个新的批处理对象。
所以像这样:
batch.commit();
batch = null;
Run Code Online (Sandbox Code Playgroud)
这样您就可以在提交表单时检查是否需要创建新批次:
if (batch == null) {
batch = db.batch();
}
... add item to batch
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1174 次 |
| 最近记录: |