Firebase功能:确保触发事件顺序

时间:2018-03-13 10:42:43

标签: firebase firebase-realtime-database google-cloud-functions

我们正在使用firebase功能向用户发送推送通知,我们希望它们按顺序发送。

有没有办法确保按照插入元素的顺序触发/处理onWrite事件?或者他们同时运行,你无法以任何方式确保?如果不可能,你会使用哪种解决方案?

示例:我们希望如果我们按此顺序插入/ foo:第1项,第2项,第3项 onWrite事件始终以相同的顺序触发:item1,item2,item3

非常感谢你的帮助!

ANSWER

嗯....我们做了一些测试,事实上,正如我们想象的那样,事件不是按顺序触发的。已发布的消息包含1,2,3,4,5 ......正如您在下图所示,它们不会按顺序处理。

Sample output log from Firebase

1 个答案:

答案 0 :(得分:0)

Firebase docs声明以下内容:

  

在开发应用程序时,请记住,Cloud Firestore触发器当前处于测试阶段,这可能会导致意外行为。

     

一些已知的限制包括:

     
      
  • 更改Cloud Firestore数据后最多可能需要10秒钟才能触发功能。
  •   
  • 与所有后台功能一样,不能保证事件顺序。此外,单个事件可能会导致多次调用Cloud Functions,因此,为确保最高质量,请确保您编写的函数是幂等的。
  •   

换句话说,仅Firestore触发器不足以完成任务。

一种选择是改为在文档上保留时间戳。然后,当相关触发器发生时,您可以对所有需要发送推送通知的文档进行排序。