获取Firebase

时间:2016-12-23 12:28:47

标签: javascript firebase firebase-realtime-database

我的Firebase数据库结构如下:

{
  "userProfile" : {
     "X0u2SEFfYEeVmdw4TXl58ou2eYy1" : {
        "email" : "jane@yahoo.com",
         "name" : "Jane"
      },
      "cliv7hQ4FsWKTtYksPDXcdDafdi2" : {
         "email" : "doe@gmail.com",
          "name" : "John Doe",
       }
    }
}

我试图获取与查询条件匹配的元素的唯一ID,例如,电子邮件等于doe@gmail.com的元素的键。

我通过使用:

来做到这一点
firebase.database().ref('/userProfile').orderByChild('email').equalTo(email).once( 'value', data => {
    let user = data.val();
});

这会使用该电子邮件返回整个对象,但我只想要它的唯一ID(" cliv7hQ4FsWKTtYksPDXcdDafdi2"在这种情况下)。实现这一目标的最佳途径是什么?

1 个答案:

答案 0 :(得分:3)

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

所以:

var query = firebase.database().ref('/userProfile').orderByChild('email').equalTo(email);
query.once( 'value', data => {
    data.forEach(userSnapshot => {
        let user = userSnapshot.val();
        let key = userSnapshot.key;
    });
});