如何在Cloud Functions for Firebase

时间:2017-09-20 04:02:20

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

在firebase中交错/并发地发生了多次执行。当新执行发生并忘记旧的执行ID时,log id会发生变化。因此执行ID仅向前移动。当旧函数恢复时,它使用新的执行ID。有没有办法实现旧功能的旧执行ID&新功能的新执行ID。

firebase logs

工作流
让我们说功能1& Function2是具有相同功能的不同触发器 1. Function1执行一些db读取和执行http请求。这将返回一个http承诺 - 这需要一些时间(可能是几毫秒)。让我们假设它从日志中执行的id是154690519665944 2.当function1正在等待时,Function2被触发。 function2获取execution-id 154690574405903。 function2也做同样的事情并等待http响应 3. Function1恢复并获得http响应,并且在记录时它使用日志中的另一个execution-id 154694739233261

execution-id 154690519665944发生了什么?

由于同时发生多个触发器,查找函数是否成功完成的唯一方法是检查日志。因此,通过使用execution-id作为过滤器,我可以找到函数是否成功执行。但是因为firebase会随机更改执行ID,我想我必须找到另一个解决方案。

PS:有一个更新调用会触发相同的功能。这是否会更改父函数execution-id?

1 个答案:

答案 0 :(得分:0)

如果没有看到您的代码或完整的日志,我认为无法提供明确的答案。

然而,听起来你问的问题是如何在异步事务中保存内存中的数据。无论Firebase与否,您基本上都有两个选择:

  1. 在第一部分期间将数据提交到数据库 事务然后在第二部分中检索它
  2. 传递数据 从第一部分到第二部分,以便它已经拥有它。
  3. 您似乎依赖于execution-id,因此我建议采用后一种方法并将该id作为输入传递给您的httprequest并将服务器作为您的响应返回。