android - 应用程序 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)
解决方案
不幸的是,使用磁盘缓存once()
可以将陈旧的数据返回给您的侦听器。请参阅我的答案以了解原因:Firebase Offline Capabilities and addListenerForSingleValueEvent
有关解决此问题的新方法,请参阅此问答。get()
该get()
方法在 Flutter 中尚不可用,因此目前您唯一的选择是使用onValue()
或禁用磁盘持久性。
我刚刚添加了此功能请求,以实现get()
从本地 SDK 用于实时数据库到 Github 存储库的方法,因此请检查那里的最新状态。
推荐阅读
- python-3.x - Python - 临时更改默认编码?
- java - 我想在 java 中的 JTable 中显示我的 excel 表
- php - 仅在 WooCommerce 管理订单列表自定义列中显示特定订单状态的数据
- python - 如何将 df 列的 .describe() 输出写入新的 df?
- python - AWS DynamoDB 使用 Python/Boto3/Lamba 更新整数计数器
- java - 在 Hibernate 实体中映射通用属性时出现异常
- python - 与所需条件匹配的正则表达式模式
- python - 新手的Python类初始化
- hadoop - 当接收数据的时间突然发生变化时如何处理 Hive 中的增量数据
- microsoft-graph-api - 我们可以重置节流限制以进行测试吗