Firestore 集合侦听器读取大量内容

And*_*huk 6 firebase swift google-cloud-firestore

我正在我的一个应用程序中实现 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
})
Run Code Online (Sandbox Code Playgroud)

在测试期间,我一直在将文档上传到此集合,然后通过 Firebase 控制台删除了所有文档。所以,现在,我的测试用户不存在该集合。当我第一次启动应用程序时,我确实看到这个集合是空的——监听器报告了正确的结果。

但是,这样做会消耗大约 1000 次读取。几乎感觉就像是在为我的测试用户下载此集合的所有历史记录(例如,插入了 500 个文档,删除了 500 个文档)。但是,即使是这样,它也不会向我报告——我在控制台中只收到一条“LOG 0”消息。

这是集合侦听器的工作方式吗?我确实知道侦听器下载初始状态,但我认为它将是当前快照,在这种情况下,它将消耗 1 次读取以确定最初没有任何返回。

欢迎任何解释/想法/建议。

我非常想通过查看详细的 Firestore 读取日志来调试它。但是,我在控制台中找不到这样的选项:(

Dou*_*son 6

在这种情况下,听起来好像 OP 在执行数据库操作时让 Firestore 控制台保持打开状态。由于 Firestore 控制台本身反映了实时更新,因此随着当前所选集合的变化,它会随着时间的推移产生读取。