如果我的Firestore数据库中有数据,我希望它在创建新文档时失败,并且绝对不要覆盖或发送对该文档的任何更新。
我正在分批执行这些操作,所以我不会让任何批次失败或杀死整个批次。
这是我尝试过/排除的内容:
batch.update
-由于更新数据而被排除
batch.set
-排除其默认值是覆盖数据
batch.set...{merge: true}
-排除,因为它将覆盖我已经拥有的所有字段
batch.create
-这似乎很有希望,但是当文档已经存在时失败
let batch = db.batch()
...
batch.xyz(refToCreateOnly, Data) // this should be successful either way such that it does not kill the batch, and only updates if the ref does not exist
...
await batch.commit()
这是进行交易的最佳/可能唯一方法吗?
答案 0 :(得分:0)
是的,您唯一的选择是在添加文档之前使用事务来验证该文档不存在。