如何在Firebase实时数据库中获取孙子的价值?

时间:2019-05-11 22:25:30

标签: node.js firebase firebase-realtime-database ionic3

我正在尝试获取发件人的子级值,如果该值等于当前登录的用户。.但是我无法获得相同的值。

数据库的JSON如下:-

{
  "requests" : {
    "YJ5qTg2uuqQeicsWCTCNQMv4OwL2" : {
      "-Lecn9gN5puugx5z-PKX" : {
        "sender" : "0XWmi1Izr6XHYvqxamfNHDONSVA2",
        "status" : "Pending"
      }
    }
  }

}

这是我尝试过的方法,但我总是会得到空值。

this.firebase.database().ref('/requests').orderByChild('sender').equalTo(firebase.auth().currentUser.uid).on('value',(snapshot) =>
    {
      console.log(snapshot.val());
    })

但是每次我变成空的时候。

我确实知道我应该提供孩子的地址以联系大孩子。

this.firebase.database().ref('/requests').orderByChild('-Lecn9gN5puugx5z-PKX/status').equalTo('Pending').on('value',(snapshot) =>
    {
      console.log(snapshot.val());
    })

如果我明确提供子地址,那么我将获得所需的值。

1 个答案:

答案 0 :(得分:0)

对Firebase数据库执行查询时,可能会有多个结果。因此,快照包含这些结果的列表。即使只有一个结果,快照也会包含一个结果的列表。

您的回调将需要通过用forEach循环结果的子节点来处理该列表。像这样:

this.firebase.database().ref('/requests')
.orderByChild('-Lecn9gN5puugx5z-PKX/status').equalTo('Pending').on('value',(snapshot) => {
  snapshot.forEach((child) => {
    console.log(child.key+': '+child.val());
  })
})