【问题标题】:Firebase query charges additional reads?Firebase 查询会收取额外的读取费用吗?
【发布时间】:2021-01-31 14:57:00
【问题描述】:

firebase 查询是如何工作的?

例如,如果我写这个查询,

 var collectionReference = FirebaseFirestore.instance
      .collection('collection')
      .where(cond)
      .where(cond2)
      .where(cond3);

所以这只会返回符合条件的文件吗? 而且我只会为这些文档阅读付费?

【问题讨论】:

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


    【解决方案1】:

    来自docs TL:DR

    阅读费用有一些细微差别,您应该牢记。以下部分详细解释了这些细微差别。 监听查询结果

    Cloud Firestore 允许您收听查询结果并在查询结果更改时获取实时更新。

    当您收听查询结果时,每次添加或更新结果集中的文档时,您都需要支付一次读取费用。当由于文档已更改而从结果集中删除文档时,您还需要支付读取费用。 (相比之下,删除文档后,您无需为阅读付费。)

    此外,如果侦听器断开连接的时间超过 30 分钟(例如,如果用户离线),您将被收取读取费用,就像您发出了全新的查询一样。 管理大型结果集

    Cloud Firestore 具有多项功能,可帮助您管理返回大量结果的查询:

    游标,允许您恢复长时间运行的查询。

    页面标记,可帮助您对查询结果进行分页。

    限制,指定要检索多少个结果

    偏移量,允许您跳过固定数量的文档。

    使用游标、页面标记和限制不会产生额外费用。事实上,这些功能可以通过只阅读您真正需要的文档来帮助您节省资金。

    但是,当您发送包含偏移量的查询时,您需要为每个跳过的文档支付一次阅读费用。例如,如果您的查询使用 10 的偏移量,并且查询返回 1 个文档,则您需要为 11 次读取付费。由于这个额外的成本,您应该尽可能使用游标而不是偏移量。 文档读取以外的查询

    对于文档读取以外的查询,例如对集合 ID 列表的请求,您需要为一个文档读取付费。如果获取完整的结果集需要多个请求(例如,如果您使用分页),则每个请求都会向您收费。 查询的最低费用

    对于您执行的每个查询,即使查询没有返回任何结果,也需要读取一个文档的最低费用。

    【讨论】:

      猜你喜欢
      • 2019-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 1970-01-01
      • 1970-01-01
      • 2021-12-09
      • 1970-01-01
      相关资源
      最近更新 更多