首页 > 解决方案 > 应用程序 Flutter 中的 Firebase 缓存 .indexOn

问题描述

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

该查询与 OrderByChild 一起使用,问题是在加载查询时,它只加载 Cashe。

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

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

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

我正在使用的查询

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

标签: androidfirebaseflutterfirebase-realtime-database

解决方案


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

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

我刚刚添加了此功能请求,以实现get()从本地 SDK 用于实时数据库到 Github 存储库的方法,因此请检查那里的最新状态。


推荐阅读