作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想更新名为 recipes
的集合中文档中的两个字段,我使用了批量更新来完成它:
let recipeRef = db.collection('recipes').doc(`${recipeId}`);
let batch = db.batch();
batch.update(recipeRef, {ratingsCount : admin.firestore.FieldValue.increment(1)});
batch.update(recipeRef, {totalRating : admin.firestore.FieldValue.increment(snap.data().rating)})
return batch.commit();
我在 recipes
集合上有一个触发函数,如下所示:
exports.RecipeUpdated = functions.firestore
.document('recipes/{recipeId}')
.onUpdate((change, context) =>
{
//code
});
我的问题是因为在上面的批处理中有两个更新,这是否也会触发 onUpdate
函数两次或者因为批处理写入是原子完成的,触发器将只被调用一次?我希望触发器只被调用一次。
最佳答案
正如@DougStevenson 在他的评论中提到的,您应该只运行代码并查看行为。但请注意,即使您使用相同的 recipeRef
,您也会在您的批处理中创建两个不同的更新。在这种情况下,您将得到的结果是 onUpdate()
将触发两次。
如果你只想被调用一次,那么你应该不创建两个不同的更新,你可以创建一个。 update()函数允许您传递多个可以更新的属性。如果您使用的是对象,而不是简单地获取对文档的引用、获取它、进行更改并将其写回。
关于android - 批量更新会触发多少次 onUpdate 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58481952/
我是一名优秀的程序员,十分优秀!