为什么检查Firebase中是否存在child总是返回false?

时间:2019-09-25 11:18:40

标签: javascript firebase firebase-realtime-database

在我的应用程序中,我使用下面的代码检查子消息是否存在。

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
       }
    });

实际上有一条消息“ hello”,日志输出也将其打印出来,但是检查功能始终返回false。怎么了?

new message exists
hello
false

enter image description here

1 个答案:

答案 0 :(得分:1)

snapshot包含直接子级,即添加到那里的消息的推送ID。因此,您可以期望snapshot.child('-Lp_cm...')存在。如果您想得到那个孩子的消息,则必须更深入:snapshot.child('-Lp_cm...').child('message')

听起来像您实际上是要遍历快照中的消息列表,类似于您对for (var tempkey in temp)进行的操作,然后挖掘这些快照的子级。