首页 > 解决方案 > 最实用的 Firestore 监听器:每条路径多个,还是一个做多个工作?

问题描述

在数据库更改上使用 Firestore 功能的最佳 Firestore 方式是什么?

当我们更改路径/{answer_id} 时,我们会做 3 件事:

这些项目可以彼此独立完成。当我们有多个可能运行时间更长的作业时,最好是编写 3 个监听器,每个监听器做自己的事情,还是让一个监听器调用 3 个函数?

标签: firebasegoogle-cloud-firestoregoogle-cloud-functions

解决方案


我理解你的问题如下:

  1. 您希望拥有一个在path更新集合中的文档时触发的云函数(“当我们在路径/{answer_id} 发生更改时”)。
  2. 此 Cloud Function 应执行三个“操作”:更新同一path集合中的两个(其他)文档并进行计算
  3. 这三个动作是完全解耦的,可以独立完成(特别是不需要原子方式写入两个文档)

如果这些假设是正确的:

  • 您可以很好地实现三个云函数,每个函数执行三个操作之一。这将花费三个 Cloud Function 调用。
  • 另一方面,您可以在一个独特的 Cloud Function 中很好地实现这三个操作。您只需要注意在所有异步工作完成后终止 Cloud Function 。这将只花费一次 Cloud Function 调用。
  • 关于“长期运行的作业”,我能看到的唯一长期运行的作业是计算,因为写入 Firestore 文档通常是“短期运行的作业”。因此,如果您看到达到 9 分钟超时的风险,这可能是由长时间计算引起的,而不是由两个 Firestore 文档的更新 => 所以,恕我直言,一个 CF 和三个 CF 之间没有区别。
  • 我可以看到证明在三个云函数中分离是合理的一个原因是在函数重试方面有不同的策略。

总之,根据您的输入(没有提供很多细节),我认为使用三种不同的云函数没有任何优势。


推荐阅读