// once
firebase.firestore().doc('path/to/doc').get()
// twice
firebase.firestore().doc('path/to/doc').get()
用户从客户端打开带有其“任务”的网络应用。
每个任务都有一个client
字段,其中包含文档参考。
所以如果只说20个客户端,我宁愿只有520个读取,而不是用户打开应用程序时的1000个读取。
最好重新设计我的数据结构,以便将相关的客户信息保存在任务本身上而不是引用上,或者Firebase JS SDK足够聪明以至于不会重复检索刚刚检索的同一文档。
PS:我在这里发现了类似的问题:
Does Firestore charge Cloud Function Get reads per retrieved documents?
但是它只是没有我想要的确切信息。
答案 0 :(得分:2)
从Firestore JS SDK缓存中检索文档需要Firebase收费吗?
不,不是。如果从本地缓存中完成读取,则不会将其计为服务器端读取。
但是您的代码有两个get
调用:
// once firebase.firestore().doc('path/to/doc').get() // twice firebase.firestore().doc('path/to/doc').get()
在这种情况下,Firestore客户端无法知道在这两个调用之间是否更改了文档。因此,它必须调用服务器以确定文档是否已更改,该文档是(或至少是 )收费记录。
如果您需要了解应用程序中多个位置的文档的当前状态,这些位置会相互靠近(在时间上执行),则应在该文档上保留一个onSnapshot
侦听器。这样可以确保本地缓存始终保持最新状态,并且成本最低。