【发布时间】:2019-07-20 03:26:02
【问题描述】:
我正在我的一个应用中实现 Firestore 数据存储。
我有一个监听器,它跟踪“日志”集合中的更新,如下所示:
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 读取日志来调试它。但是,我在控制台中找不到这样的选项:(
【问题讨论】:
-
请记住,如果您正在查看正在更改的集合,则打开的 Firebase 控制台也可能会导致实时读取。
-
@DougStevenson 你是对的 - 我重复了我用来在控制台中获取测试用户数据的过程,读取次数增加了 1000...
-
@DougStevenson 你想发表你的评论作为答案吗?
标签: swift firebase google-cloud-firestore