如何根据孩子

时间:2016-10-17 12:43:09

标签: angularjs firebase firebase-realtime-database

我正在尝试根据孩子的电子邮件检索用户的密钥,在这种情况下是student@memail.com。我尝试了很多方法,但无法找到记录密钥的方法。我想检索值KKTxEMxrAYVSdtr0K1NH,下面是数据库的快照

database

目前,if((childSnap.val().role) == "student") {返回给我学生,snap.key()返回“User”。如何检索KTxEMxrAYVSdtr0K1NH?

2 个答案:

答案 0 :(得分:1)

您使用什么方法来检索节点?如果您使用“child_added”,则可以使用: childSnap.key

如果您使用“value”,那么您的引用就是响应对象中的键。所以你可以使用:

for (var key in childSnap.val()) {
console.log(key)
}

childSnap.forEach(...)

以下是清除(检查控制台)的示例: https://jsfiddle.net/qrLvbok4/1/

值和child_added之间存在差异,请检查子事件列表部分:https://firebase.google.com/docs/database/web/lists-of-data

答案 1 :(得分:1)

var ref = firebase.database().ref('Users');
ref.on('child_added', function(snap) {
    // You can retrieve the parent key by calling snap.key
    console.log(snap.key);
});

更新(通过电子邮件获取父密钥):

var ref = firebase.database().ref('Users').orderByChild('email').startAt('student@memail.com').endAt('student@memail.com');
ref.once('value', function(snap) {
    console.log(Object.keys(snap.val())[0]);
});