Firestore未调用.data()读取文档数据是否仍会计入读次数收费?
Firestore查询读操作计费规则说明
问题场景
假设你执行数据库查询操作,从Firestore数据库中检索得到1000个匹配文档,对应执行代码如下:
const querySnapshot = await query.get();
若你拿到返回结果后,未对每一个文档调用.data()方法读取文档内的具体数据,该次操作是否仍会被统计为1000次文档读操作并产生对应计费?
明确答案
会被统计为1000次文档读操作,正常产生对应计费。
规则说明
- Firestore的文档读计费触发节点是服务端完成查询、向客户端返回匹配的文档快照集合时,和客户端拿到结果后有没有调用
.data()方法读取字段内容没有关联。 - 当
await query.get()成功返回querySnapshot对象时,服务端已经完成索引扫描、文档读取、结果回传的全流程,资源消耗已经产生,读操作计数在这个节点就已经完成统计。 - 哪怕你拿到
querySnapshot之后只读取文档ID、文档元数据(比如创建时间、更新时间戳),完全不触碰文档内存储的业务字段,这1000个匹配到的文档依然会全额计入读操作配额。
唯一不计费的例外场景:如果这次查询直接命中客户端本地的Firestore持久化缓存,没有向服务端发起真实请求,就不会产生服务端的读计费,这种情况同样和是否调用
.data()无关。
内容的提问来源于stack exchange,提问作者Raul
相关产品推荐
相关产品推荐

