我有一个应用程序,我在firebase表中有几千个条目.现在有人正在连接到这个表,我需要计算并总结这些项目.
-itemlist
|
--1
|-x:2
--2
|-x:4
Run Code Online (Sandbox Code Playgroud)
等等.用户可以随时连接(意味着他之前从未见过这个表),另一个用户可以在任何给定时间更改某个值或添加值.
现在,如果我尝试添加一个ValueEventListener"itemlist",它就可以工作,如果没有新数据,但只要我连接到一个包含1000个条目的新数据库,监听器就会调用这1000个条目中的每一个.
我尝试使用onChildlistener,但这会在第一次调用为每个项目添加的on ChildItem.这有时需要2分钟.
有没有办法让整个数据库一次,计算它然后只监听变化?
我正在使用版本1.0.1中的firebase_database插件,目前正在Android上进行测试。
我单身访问数据库。
GlobalFBInstance._internal() {
final firebaseInstance = FirebaseDatabase.instance;
firebaseInstance.goOnline();
firebaseInstance.setPersistenceEnabled(true);
firebaseInstance.setPersistenceCacheSizeBytes(10000000);
databaseRef = firebaseInstance.reference();
databaseRef.keepSynced(true);
storageRef = FirebaseStorage.instance.ref();
}
Run Code Online (Sandbox Code Playgroud)
每次重新启动应用程序后,该应用程序都需要Internet才能获取数据库。我以为持之以恒并保持同步,不需要互联网吗?如果我的连接非常不好(在仿真器和设备上进行了测试),那么从数据库中加载包含四个简单字符串的gridview会花费很多时间。
当我使用以下命令加载数据快照时:
Future<DataSnapshot> getDatabaseSnap(String location) async {
var _newref = databaseRef.child(location);
await _newref.keepSynced(true);
return await _newref.once();
}
Run Code Online (Sandbox Code Playgroud)
如果互联网连接速度慢,它将不会加载。
这可能是什么原因?有没有更好的方法来确保数据库每次都不需要连接?
提前致谢。
编辑:等待持久性时,我得到错误:
bool ispersistant = await firebaseInstance.setPersistenceEnabled(true);
Run Code Online (Sandbox Code Playgroud) persistence offline-caching dart firebase-realtime-database flutter