我在我的安卓应用中使用了 firebase。所有数据都存储在 Firestore 文档中。主页上会显示各种汽车公司的名称,如果用户点击一家公司,则会显示型号名称,最后会显示有关该汽车的信息。该应用程序仍在开发中,每天大约有 250 次文档读取。我无法弄清楚为什么会发生这种情况。在实时数据库中包含公司及其型号名称以及在 Firestore 文档中包含有关该特定汽车的信息是否是个好主意?例如。 (请忽略语法)db.collections("Ferrari").document("458").getResults()
这种查询会算作 1 个文档读取吗?我可以通过这种方式减少文档阅读吗?
答案 0 :(得分:0)
用于文档
<块引用>阅读收费有一些细微差别,您应该牢记。这 以下部分详细解释了这些细微差别。
监听查询结果
<块引用>Cloud Firestore 允许您收听查询结果并获取 查询结果变化时实时更新。
当您收听查询结果时,您需要支付阅读费用 每次添加或更新结果集中的文档时。你是 当从结果集中删除文档时,也会收取读取费用 因为文件变了。 (相反,当文档是 已删除,您无需支付阅读费用。)
此外,如果侦听器断开连接超过 30 分钟(对于 例如,如果用户离线),您将被收取读取费用 如果您发出了全新的查询。
管理大型结果集
<块引用>Cloud Firestore 有多项功能可帮助您管理查询 返回大量结果:
游标,允许您恢复长时间运行的查询。页面令牌, 这可以帮助您对查询结果进行分页。限制,指定如何 要检索的许多结果。偏移量,允许您跳过固定的 文档数量。
使用游标、页面令牌和 限制。其实这些功能可以帮你省钱看书 只提供您实际需要的文件。
但是,当您发送包含偏移量的查询时,您会 对每个跳过的文档收取阅读费用。例如,如果您的查询 使用 10 的偏移量,并且查询返回 1 个文档,您是 收取 11 次读取费用。由于此额外费用,您应该使用 尽可能使用游标而不是偏移量。
文档读取以外的查询
<块引用>对于文档读取以外的查询,例如请求列表 集合 ID,您需要为读取一个文档付费。如果取 完整的结果集需要多个请求(例如, 如果您使用分页),则每次请求都会向您收费。
如果我们回答您的问题。
这个例子展示了如何使用 get()
获取单个文档的内容db.collections("Ferrari").document("458").get() // One Document One Read :)
注意:即使查询未返回任何结果,您执行的每个查询也至少需要读取一份文档。