firebase - 最实用的 Firestore 监听器:每条路径多个,还是一个做多个工作?
问题描述
在数据库更改上使用 Firestore 功能的最佳 Firestore 方式是什么?
当我们更改路径/{answer_id} 时,我们会做 3 件事:
- 更新/路径/1
- 做一个计算函数
- 更新/路径/3
这些项目可以彼此独立完成。当我们有多个可能运行时间更长的作业时,最好是编写 3 个监听器,每个监听器做自己的事情,还是让一个监听器调用 3 个函数?
解决方案
我理解你的问题如下:
- 您希望拥有一个在
path
更新集合中的文档时触发的云函数(“当我们在路径/{answer_id} 发生更改时”)。 - 此 Cloud Function 应执行三个“操作”:更新同一
path
集合中的两个(其他)文档并进行计算 - 这三个动作是完全解耦的,可以独立完成(特别是不需要原子方式写入两个文档)
如果这些假设是正确的:
- 您可以很好地实现三个云函数,每个函数执行三个操作之一。这将花费三个 Cloud Function 调用。
- 另一方面,您可以在一个独特的 Cloud Function 中很好地实现这三个操作。您只需要注意在所有异步工作完成后终止 Cloud Function 。这将只花费一次 Cloud Function 调用。
- 关于“长期运行的作业”,我能看到的唯一长期运行的作业是计算,因为写入 Firestore 文档通常是“短期运行的作业”。因此,如果您看到达到 9 分钟超时的风险,这可能是由长时间计算引起的,而不是由两个 Firestore 文档的更新 => 所以,恕我直言,一个 CF 和三个 CF 之间没有区别。
- 我可以看到证明在三个云函数中分离是合理的一个原因是在函数重试方面有不同的策略。
总之,根据您的输入(没有提供很多细节),我认为使用三种不同的云函数没有任何优势。
推荐阅读
- html - 为什么输入 url 参数时 http-server 上的 Node.js 会冻结
- python - 项目中自定义第三方python包的正确方法
- java - 如何在java中使用本机android代码返回当前位置
- sql - 在 web2py 和 SQLFORM.grid 中使用两个条件查询
- css - 我可以以更简单的方式将 css 类指定为一种标签吗?
- php - sim800 和 Codeigniter CSRF 令牌问题
- gradle - Gradle:如何在控制台上打印依赖项工件 url
- react-native - 登录/注册后如何跳转另一个页面
- sorting - 根据多行中多个单元格的匹配条件以及 Google 表格中另一个表的排名返回值
- c# - 在发布和更改主机 RabbitMQ 中检测丢失的连接