我可以信任云还原触发器的顺序吗?



我正在尝试调试与Cloud Firestore一起使用的Firebase Cloud Functions设置的一些奇怪问题。我正在将一些数据写入Cloud Firestore,并在Cloud Functions中内置了一些触发器。当我查看日志时,似乎有时在更新触发器之后创建触发器。

从文档中,我读到了"与所有后台函数一样,不保证事件排序"。

所以根据我的理解,这真的会发生吗?我只是想确保因为这会在我的设置中发生很大变化。

例如,如果我需要在更新或创建文档时更新其他文档,那么如果更新未按正确的顺序运行,我如何确保写入最新数据。我通常使用来自change.after.data((的数据,但我能看到的唯一其他解决方案是每次都读取数据以确保拥有最新的数据。

所以两个问题:

  1. 我可以相信我的触发器以相同的顺序发生吗?
  2. 如果不是,我该如何解决这个问题?

感谢您的解释和帮助!

正如文档已经说过的:不能保证解析触发器的顺序。

处理此问题的最佳方法是确保所有操作都是幂等的。 即多次或以不同的顺序运行相同的操作,会导致相同的结果。这是我个人更喜欢使用onWrite触发器的原因之一,而不是onCreateonUpdate等,因为它们使我更容易编写在所有情况下执行相同操作的代码。

因此,在您的代码中,您将检查目标文档是否已存在。如果是,请阅读目标文档。如果没有,请创建对新文档的引用。接下来,您将检查目标文档是否包含所需的数据。如果是这样,则什么都不做。如果没有,请基于源文档生成数据,并将其写入 Firestore。

实时数据库和 Firestore 都可以采用时间戳命令,以便在.create.update发生时立即对其进行时间戳。因此,您的云函数似乎可以查看时间戳以确定最新值。

.firebase.database.ServerValue.TIMESTAMP;
.firebase.firestore.FieldValue.serverTimestamp()

最新更新