Зачем проверять, существует ли child в Firebase, всегда возвращать false? - PullRequest
0 голосов
/ 25 сентября 2019

В своем приложении я использую приведенный ниже код, чтобы проверить, существует ли дочернее сообщение или нет.

this.firechats.child(uid).child(touid).orderByChild("time").startAt(time).on('value', (snapshot) => {
       var temp = snapshot.val();
       for (var tempkey in temp) {
         console.log("new message exists")
         console.log(temp[tempkey].message);
       }
       console.log(snapshot.hasChild("message"))
       if(snapshot.child("message").exists()){
            //do something
       }
    });

На самом деле есть сообщение "привет", вывод журнала также распечатывает его, но функция проверки всегда возвращает ложь.Что не так?

new message exists
hello
false

enter image description here

1 Ответ

1 голос
/ 25 сентября 2019

snapshot содержит непосредственные дочерние элементы, которые являются push-идентификаторами сообщений, которые были добавлены туда.Таким образом, вы можете ожидать, что snapshot.child('-Lp_cm...') существует.Если вы хотите получить сообщение , которое child, вам нужно пойти еще глубже: snapshot.child('-Lp_cm...').child('message')

Звучит так, как будто вы действительно хотите перебрать список сообщений в снимке, аналогичнокак вы делаете с for (var tempkey in temp), затем копайтесь в детях этих снимков.

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