小编all*_*eep的帖子

有效地总结火力基础数据

我有一个应用程序,我在firebase表中有几千个条目.现在有人正在连接到这个表,我需要计算并总结这些项目.

-itemlist
|
--1
  |-x:2
--2
  |-x:4
Run Code Online (Sandbox Code Playgroud)

等等.用户可以随时连接(意味着他之前从未见过这个表),另一个用户可以在任何给定时间更改某个值或添加值.

现在,如果我尝试添加一个ValueEventListener"itemlist",它就可以工作,如果没有新数据,但只要我连接到一个包含1000个条目的新数据库,监听器就会调用这1000个条目中的每一个.

我尝试使用onChildlistener,但这会在第一次调用为每个项目添加的on ChildItem.这有时需要2分钟.

有没有办法让整个数据库一次,计算它然后只监听变化?

android firebase firebase-realtime-database

3
推荐指数
1
解决办法
2098
查看次数

Flutter Firebase数据库持久性不起作用

我正在使用版本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

3
推荐指数
1
解决办法
2922
查看次数