启用持久性的 Firestore returns 返回不存在的文档 IDS

Firestore with Persistence Enabled returns back Document IDS that do not exist

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

我正在通过一个简单的调用获取用户的文档。

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

以上调用被馈送到 Angular table 数据源

也许以上这些并不重要,只是确定一下。

进入正题。

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

我核对了持久性提供的 IDS,有些在在线数据库中不存在。

我不确定 why/how 这是否发生了,但我对以下方面有点困惑:

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

所以您确实有可能在 snapshotChanges() 的第一个回调中获得过时数据。

但通常您只需从 snapshotChanges() 更新您的 UI,因此一旦第二个(最新)数据出现,您将再次更新 UI。