我在Firestore的Firebase项目上启用了Persistence。
我通过一个简单的电话就得到了用户的文件。
this.afs
.collection('users')
.doc(user.uid)
.collection("events").snapshotChanges().subscribe(...etc etc...)
上面的调用被提供给Angular表DataSource
也许上述内容并不重要,但只要确定即可。
要点。
我为集合events
返回的列表包含启用Firestore Persistence时可能会删除的项目。
我对持久性给出的IDS进行了交叉检查,而在线数据库中不存在某些IDS。
我不确定为什么/如何发生这种情况,但是我对以下问题感到困惑:
我做错什么了吗?
我应该打些其他电话吗?
这是一个错误吗?
答案 0 :(得分:1)
将侦听器附加到snapshotChanges()
时,它会立即查询本地缓存,并从中满足查询条件。然后,它连接到服务器,以检查是否有任何更新。如果有任何更新,它将使用更新的快照再次触发snapshotChanges()
(并从中更新本地缓存)。
因此,确实有可能在snapshotChanges()
的第一个回调中获得过时的数据。
但是通常情况下,您只会从snapshotChanges()
更新UI,因此一旦有第二个(最新的)数据进入,您将再次更新UI。