Firestore集合侦听器读取大量信息

时间:2019-02-26 14:41:17

标签: swift firebase google-cloud-firestore

我正在其中一个应用程序中实现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读取日志进行调试。但是,我在控制台中找不到这样的选项:(

1 个答案:

答案 0 :(得分:2)

在这种情况下,听起来好像OP在执行数据库操作时将Firestore控制台保持打开状态。由于Firestore控制台本身会反映实时更新,因此随着当前选定集合的更改,它将随着时间的流逝而导致读取。