【发布时间】:2020-09-07 16:52:04
【问题描述】:
我正在尝试在 Flutter 上绕过 Firebase persistence, clear Firebase cache。
TLDR 问题是我不想通过应用程序监听数据更改,但我只想在启动时下载数据快照。但是,当您启用持久性时,Firebase 实时数据库会首先提供以前缓存的数据并在后台进行更新。这意味着除非您多次询问,否则您在询问时不会获得新数据。
我的解决方法是创建一个新的一次性 Firebase 应用实例来获取不使用 presistence 的快照。
final defaultOptions = await FirebaseApp.instance.options;
final appName = 'second';
final app = await FirebaseApp.configure(name: appName, options: defaultOptions);
final fdb = FirebaseDatabase(app: app, databaseURL: defaultOptions.databaseURL);
但是,当我尝试通过 fdb 访问节点时,我得到 Firebase DatabaseError(-3, Permission denied,)。 通过默认应用程序实例访问数据库工作正常,但我需要启用持久性以进行数据上传。
我不确定如何实现我现在需要做的事情。
编辑:
我的查询:
final firebaseTags = fdb
.reference() //
.child('tags')
.child(user.id)
.orderByChild('synchronized_at')
.startAt(syncFrom + 1, key: 'synchronized_at')
.once();
【问题讨论】:
-
您是否还与使用 Firebase 身份验证登录的用户打交道?您想分享失败的查询以及可能对该查询有效的任何安全规则吗?
-
是的,我正在使用 Firebase 身份验证,我不想在这里分享我的安全规则,但我可以在这里看到罪魁祸首,谢谢 :) 我想不可能共享身份验证会话两个 FirebaseApps?我附上了我的查询,仅供参考。
标签: firebase flutter firebase-realtime-database