Firestore onUpdate触发器执行后更新字段的最简方法及代码可行性
Firestore onUpdate触发器后更新字段的最优方式
你的现有代码是否可行?
完全可行,这段代码能正确定位到目标文档并将updateThisField字段更新为false,逻辑上没有问题。
能不能直接修改change.after对象?
不行。change.after是文档快照(DocumentSnapshot),它只是当前文档在数据库中状态的只读副本,直接给它的属性赋值(比如change.after.updateThisField = true)只会修改内存里的快照对象,不会同步到Firestore数据库,这种操作没有实际意义。
最简更新方式是什么?
不用重新拼接集合路径,直接利用change.after.ref——这个属性已经指向了触发本次onUpdate事件的文档的引用,直接调用它的update()方法即可,代码更简洁,也避免了路径拼接可能出现的错误。
修改后的代码示例:
export const onRespondedToFriendRequest = functions.firestore .document("users/{userDocID}/notifications/{notifID}") .onUpdate(async (change, context) => { //...rest of code // 最简更新方式:直接用change.after.ref await change.after.ref.update({ updateThisField: false }); });
总结
- 现有代码功能正常,但不是最优写法
- 快照对象无法直接修改同步到数据库,必须通过Firestore的API执行更新
- 利用
change.after.ref是当前场景下最简洁高效的更新方式
内容的提问来源于stack exchange,提问作者whatwhatwhat
相关产品推荐
相关产品推荐

