Flatter Read База данных в реальном времени - PullRequest
0 голосов
/ 21 января 2020

Я пытаюсь подсчитать количество сообщений в моей базе данных Firebase Realtime, но не могу прочитать дальше, чем первая ветка 'messages'.

Я использую эту команду для отображения точного количества разговоров Я создал.

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

Он выглядит мне хорошо 14, но мне нужно подсчитать каждое сообщение, созданное в каждой ветке (чат).

Чтобы понять древовидную структуру :

сообщений ---------- id чат ------------- id сообщения

database

1 Ответ

0 голосов
/ 21 января 2020

Один из способов сделать это - использовать поток onChildAdded. Этот поток вызывается с каждым дочерним узлом местоположения, в котором вы слушаете, поэтому на один уровень ниже в дереве JSON.

Это будет выглядеть примерно так:

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

Когда вы При первом вызове onChildAdded.listen длина каждого существующего дочернего узла будет напечатана. Затем, если вы добавите новый дочерний узел (напрямую) в messages, длина этого будет также напечатана.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...