【问题标题】:Firebase cache .indexOn in Application Flutter应用程序 Flutter 中的 Firebase 缓存 .indexOn
【发布时间】:2021-05-09 03:11:49
【问题描述】:

我正在为我的颤振应用程序使用 Firebase,并且我创建了一个 .IndexOn。

查询与 OrderByChild 一起工作,问题是在加载查询时,它只加载了 Cashe。

例如,当我在设备 1 上打开应用程序时,同时我通过另一个设备 2 创建了一条记录。如果我删除应用程序缓存,设备 1 只会加载新数据。

我正在使用 PersitenceEnabled,但问题只发生在使用 .IndexOn 的查询中

"users": {
".indexOn": ["isPsycho","currentPsycho"]
}

我正在使用的查询

await databaseReference
      .orderByChild('isPsycho')
      .equalTo(true)
      .once()
      .then((DataSnapshot snapshot) 

【问题讨论】:

标签: android firebase flutter firebase-realtime-database


【解决方案1】:

不幸的是,将磁盘缓存与 once() 结合使用可能会将陈旧的数据返回给您的侦听器。请参阅我的回答 here 以了解原因:Firebase Offline Capabilities and addListenerForSingleValueEvent

请参阅this Q&A,了解解决此问题的新 get() 方法。 get() 方法在 Flutter 中尚不可用,因此目前您唯一的选择是使用 onValue() 来禁用磁盘持久性。

我刚刚将此功能请求添加到 implement get() method from native SDKs for Realtime Database 到 Github 存储库中,因此请检查那里的最新状态。

【讨论】:

    猜你喜欢
    • 2019-06-19
    • 2020-08-07
    • 2020-08-26
    • 2017-08-17
    • 1970-01-01
    • 2022-01-26
    • 2018-12-14
    • 2020-07-02
    • 2021-03-21
    相关资源
    最近更新 更多