【问题标题】:do you need to create a separate collection/document for reading an aggregated document with firebase cloud function您是否需要创建一个单独的集合/文档来读取具有 Firebase 云功能的聚合文档
【发布时间】:2021-08-21 09:22:39
【问题描述】:

我想使用云功能生成一个聚合文档,其中包含我应用第一页所需的所有数据。每次在 Firestore 集合 A 中添加/更新文档时,都会更新聚合文档。 为此,我必须创建一个单独的集合 B,其中包含一个文档(来自云函数的聚合文档),应用程序在启动时将从中获取它吗?因此,我的云功能将更新集合 B 中的单个文档?我对如何使用云功能聚合数据的理解是否正确?非常感谢

【问题讨论】:

    标签: firebase google-cloud-firestore google-cloud-functions


    【解决方案1】:

    这确实是一种完全有效的方法。请注意,如果存在多个用户并行更新源数据的风险,您可以在 Cloud Function 中使用Transaction


    您没有详细说明集合 A 中的内容(相同的文档还是不同的文档?)以及汇总的内容(数字、标题等),但您应该尽量避免阅读集合中的所有文档A 每次触发云功能。这可能会产生一些不必要的额外费用。如果您的应用的第一页汇总了一些数字,您可以使用一些counters

    【讨论】:

    • 感谢您的帮助!集合 A 包含不同的文档,汇总的是:精选文档(Featured 字段为 true 的文档)、10 个最新文档(按添加时间排序)。现在我每次加载我的应用程序时都会发送 2 次读取,所以我想使用一个函数将我需要的内容聚合到 1 个文档中以执行 1 次只读。因此,该函数将在聚合文档中的最新文档列表中添加一个新文档,从聚合文档中的最新文档列表中删除 1 个文档,如果新文档被推荐到其精选文档列表中,则将其添加。这个计划有意义吗?谢谢你
    • 是的,这是有道理的。只要解决方案的总成本低于当前情况的成本,就有意义。要计算此成本,您需要添加 Firestore 读取和写入的成本以及 Cloud Function 执行的成本(使用免费轮胎,例如 Cloud Functions 每月 200 万次免费调用)。
    猜你喜欢
    • 2022-01-17
    • 1970-01-01
    • 2021-12-13
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多