启用了持续性的Firestore会返回不存在的文档IDS

时间:2019-01-10 13:25:24

标签: firebase google-cloud-firestore persistence

我在Firestore的Firebase项目上启用了Persistence。

我通过一个简单的电话就得到了用户的文件。

this.afs
        .collection('users')
        .doc(user.uid)
        .collection("events").snapshotChanges().subscribe(...etc etc...)

上面的调用被提供给Angular表DataSource

也许上述内容并不重要,但只要确定即可。

要点。

我为集合events返回的列表包含启用Firestore Persistence时可能会删除的项目。

我对持久性给出的IDS进行了交叉检查,而在线数据库中不存在某些IDS。

我不确定为什么/如何发生这种情况,但是我对以下问题感到困惑:

  • 我做错什么了吗?

  • 我应该打些其他电话吗?

  • 这是一个错误吗?

1 个答案:

答案 0 :(得分:1)

将侦听器附加到snapshotChanges()时,它会立即查询本地缓存,并从中满足查询条件。然后,它连接到服务器,以检查是否有任何更新。如果有任何更新,它将使用更新的快照再次触发snapshotChanges()(并从中更新本地缓存)。

因此,确实有可能在snapshotChanges()的第一个回调中获得过时的数据。

但是通常情况下,您只会从snapshotChanges()更新UI,因此一旦有第二个(最新的)数据进入,您将再次更新UI。