【问题标题】:Firestore with Persistence Enabled returns back Document IDS that do not exist启用持久性的 Firestore 返回不存在的文档 IDS
【发布时间】:2019-01-10 22:50:11
【问题描述】:

我在我的 Firebase 项目中为 Firestore 启用了持久性。

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

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

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

也许上述内容并不重要,但只是确保。

说到点子上了。

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

我交叉检查了持久性提供的 IDS,有些在在线数据库中不存在。

我不确定为什么/如何发生这种情况,但我有点困惑:

  • 我做错了吗?

  • 我应该打一些不同的电话吗?

  • 这是一个错误吗?

【问题讨论】:

    标签: firebase google-cloud-firestore persistence


    【解决方案1】:

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

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

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

    【讨论】:

    • 我确实订阅了快照更改弗兰克。我只是没有在我的代码中包含那部分。我觉得在某些本地删除上,整个列表不会在其他设备上更新。这是我遇到的一个非常奇怪的问题。
    • 我手动删除了 indexedDB,问题无法重现,现在更难调试了 :-(
    猜你喜欢
    • 2021-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-29
    • 1970-01-01
    • 1970-01-01
    • 2020-10-02
    • 2021-05-08
    相关资源
    最近更新 更多