【问题标题】:Flutter Read Realtime DatabaseFlutter 读取实时数据库
【发布时间】:2020-01-21 09:26:09
【问题描述】:

我正在尝试计算我的 Firebase 实时数据库中的消息数量,但我无法阅读比第一个“消息”分支更远的内容。

我使用这个命令来显示我创建的对话的确切数量。

FirebaseDatabase.instance.reference().child('messages').once().then((DataSnapshot snapshot){
  print(snapshot.value.length);
});

他 14 对我来说看起来不错,但我需要对每个分支(聊天室)中创建的每条消息进行计数。

要了解树结构:

消息 ----------id聊天室 -------------身份证信息

【问题讨论】:

    标签: flutter firebase-realtime-database dart count


    【解决方案1】:

    一种方法是使用onChildAdded 流。此流会随您侦听位置的每个子节点调用,因此在 JSON 树中低一级。

    它看起来像:

    FirebaseDatabase.instance.reference().child('messages').onChildAdded.listen((Event event) {
        print(event.snapshot.value.length);
    });
    

    当您第一次调用onChildAdded.listen 时,将打印每个现有子节点的长度。然后,如果你在messages 下(直接)添加一个新的子节点,它的长度也会被打印出来。

    【讨论】:

    • 从数据下载和成本的角度来看,在消息聊天室节点上维护消息计数是否更有效/更好?
    • 上面的代码正在下载messages下的所有内容。如果您只需要计算子节点的数量,这是非常浪费的。如果这就是您对下载量的全部处理,那么记录一下确实会更好。
    • 谢谢,弗兰克。这就是我的想法和实施。
    猜你喜欢
    • 2021-09-13
    • 2022-08-20
    • 1970-01-01
    • 2021-03-04
    • 2021-09-20
    • 1970-01-01
    • 2021-07-02
    • 2022-10-07
    • 2022-08-05
    相关资源
    最近更新 更多