【问题标题】:Android firebase database get values totalsAndroid firebase 数据库获取值总计
【发布时间】:2018-09-21 01:40:31
【问题描述】:

我正在使用 firebase-realtime-database,我想获取所有子值的总数和子名称的总数。

我需要获取所有总值和总量 如果我添加新项目,则该项目总计也会添加到所有总计中。

【问题讨论】:

  • 所以你想得到OrderItemLsit下面所有对象的总数 -> 01,对吧?

标签: android firebase firebase-realtime-database


【解决方案1】:

使用ChildEventListener

ref.addChildEventListener(new ChildEventListener() {
    public void onChildAdded(DataSnapshot dataSnapshot, String previousKey) {
         YourModel model = dataSnapshot.getValue(YourModel.class);

         // declare a global variable total
         total += model.getTotal();
    }
    public void onChildChanged(DataSnapshot dataSnapshot, String s) {
    }
    public void onChildRemoved(DataSnapshot dataSnapshot) {
    }
    public void onChildMoved(DataSnapshot dataSnapshot, String s) {
    }
    public void onCancelled(DatabaseError error) { }
});

【讨论】:

  • 总数据类型是什么?
  • 这取决于您在模型中指定的内容。
  • 上面的代码可能不起作用,最好的办法是创建一个单独的节点来保存总值,并在插入每个项目期间使用firebase实时事务函数更新数据库中的总值数据库。对于大数据,上述代码将加载更多数据和时间,
  • @JinsonPaul 感谢您分享您的意见。但我不同意,为总值创建另一个节点很好,但现在您刚刚添加了另一个作业,因为现在每个事务都需要同步或更新 total 节点。所以恕我直言,更好的方法是监听子事件并将总值存储在一个局部变量中,而不是创建一个具有可能去同步的值的节点。
  • 但是当应用程序关闭然后本地值重置为 0 时出现问题,每次将新子添加到数据库时都会执行 childadded。所以如果数据变得太大,当用户卸载他的应用程序然后安装用户需要从数据库中获取整个数据,而不是如果我们设置一个单独的节点来保存总计,它仍然存在,我强烈推荐这种方法,因为我每次计算数据都会遇到问题。这既费时又费数据
猜你喜欢
  • 1970-01-01
  • 2017-11-09
  • 2018-11-13
  • 2017-03-26
  • 1970-01-01
  • 2020-01-23
  • 1970-01-01
  • 2019-08-21
  • 1970-01-01
相关资源
最近更新 更多