我有一个文档监听器,可以监听前25个与此相似的文档:
db.collection("cities").whereField("state", isEqualTo: "CA")
.limit(to: 25)
.addSnapshotListener { querySnapshot, error in
guard let documents = querySnapshot?.documents else {
print("Error fetching documents: \(error!)")
return
}
let cities = documents.map { $0["name"]! }
print("Current cities in CA: \(cities)")
}
我注意到,当添加与查询匹配的新文档时,侦听器将返回前25个文档(即使仅添加了一个新文档)。
每次向该侦听器添加一个新文档时,我都要为25次文档读取收取费用吗?还是从缓存中获得任何帮助(因为我使用的是快照侦听器),而缓存仅对添加的一个文档收费?
答案 0 :(得分:1)
您只需要为添加的文档付费。只要添加了侦听器,就可以将属于先前结果集的所有文档缓存在内存中,如果有更改,则将其重新传送给侦听器。即使在删除侦听器之后,针对同一查询的新侦听器也可能会从磁盘缓存中提取结果,这也不会花费每个文档的读取费用。