Firestore定价

时间:2019-01-23 18:18:58

标签: firebase google-cloud-firestore

关于此主题有几个问题,但我找不到能回答我问题的问题。与described here一样,对于最低费用是否适用于query.get()或实时侦听器也没有明确的解释。引用:

  

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

问这个问题的原因,即使对于某人来说似乎很明显是由于该部分; *for each query that you perform*在该语句中可能意味着一次触发,例如使用get()方法。

场景::如果10个用户正在通过查询听集合中的更改 ,即query.addSnapshotListener(),则在一个仅与两个查询过滤器匹配的文档中发生更改用户,其他八个人是否也要为阅读一本书支付费用?

使用的数据库: Firestore

1 个答案:

答案 0 :(得分:1)

在这种情况下,我会说不,其他八个人将不会被计为读取,因为他们正在收听的文档尚未根据其过滤器(查询参数)进行更新或尚未从该集合中添加/删除。读取内容不是基于对集合的更改,而是基于您正在特定收听的文档流的更改。因为那1个文档更改不是其他8个用户正在听的文档的一部分,所以没有新的阅读内容可供他们使用。但是,如果该1个文档更改导致该文档现在与其他8个文档的查询过滤器匹配,那么是的,这些用户将有8个新读取。希望有道理。

另外值得注意的是,通过sdk和firestore的缓存启用offlinePersistence可以最大化限制读取的效率,以及使用单例Observable可以使应用程序中的多个实例订阅,以反对打开同一查询的多个流在您的整个应用中。并不是真的适用于此问题目录,但同样,值得注意的是。