【发布时间】:2021-04-24 19:48:19
【问题描述】:
我在同步两个 Firebase 云函数时遇到问题,第一个对多个文档执行批量更新,第二个由其中一个文档上的 onWrite 触发器触发。
为了说明,假设我有两个文档 A 和 B(在两个单独的集合中)。
- 第一个云函数使用 Firestore
WriteBatch更新文档A和B(两个文档都已成功更新); - 写入文档
B触发另一个云功能(使用onWrite触发器)。该函数需要读取文档A; - 我在第二个函数中有错误,因为它读取了旧版本的文档
A(在第一个函数写入批处理之前)。
有没有办法确保onWrite 函数只有在两个文档都被写入之后才被触发?
我可以单独更新它们并等待 A 在第一个函数中写入 B 之前写入,但我想在一个事务中保持两者的更新,因为这些文档是链接的,而我没有想冒险让一个更新而没有另一个。
【问题讨论】:
-
B 的
onWrite触发器是否仅在您通过批量写入更新时触发,还是可以在其他情况下触发?换句话说,您可以使用可能使用 Pub/Sub 触发的 Cloud Function,并在批量写入完成时发送新的 Pub/Sub 消息。 -
听起来像是雷诺的回答! ??????
-
@RenaudTarnec 是的,
onWriteforB可以由其他事件触发,实际上B也可以由应用程序的用户直接更新。感谢您的提示,我将仔细研究 Pub/Sub 选项。但就我的信息而言,批量写入不应该是瞬时的吗? (同时进行所有写入)
标签: firebase google-cloud-firestore google-cloud-functions