我正在其中一个应用程序中实现Firestore数据存储。
我有一个侦听器,它遵循“ logs”集合中的更新,如下所示:
db.collection("logs").addSnapshotListener({ (snapshot, error) in
guard let s = snapshot else {return}
if s.metadata.isFromCache {
print("LOG_C \(s.documentChanges.count)")
return
}
print("LOG \(s.documentChanges.count)")
// other code
})
在测试过程中,我一直在将文档上传到此收藏集中,然后通过Firebase控制台删除了所有文档。因此,目前,我的测试用户不存在该集合。首次启动该应用程序时,确实看到该集合为空-侦听器报告正确的结果。
但是,这样做会消耗大约1000次读取。几乎感觉就像是要为我的测试用户下载该收藏集的所有历史记录(例如,插入500个文档,删除500个文档)。但是,即使这样做,它也不会向我报告-我在控制台中仅收到一条“ LOG 0”消息。
这是集合侦听器的工作方式吗?我确实知道侦听器会下载初始状态,但是我认为这将是当前快照,在这种情况下,它将消耗1次读取以确定最初没有返回任何内容。
欢迎任何解释/想法/建议。
我非常想通过查看详细的Firestore读取日志进行调试。但是,我在控制台中找不到这样的选项:(
答案 0 :(得分:2)
在这种情况下,听起来好像OP在执行数据库操作时将Firestore控制台保持打开状态。由于Firestore控制台本身会反映实时更新,因此随着当前选定集合的更改,它将随着时间的流逝而导致读取。