在JavaScript Firebase中获取子节点的密钥
我正在尝试从子节点数据获取密钥在JavaScript Firebase中获取子节点的密钥,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我正在尝试从子节点数据获取密钥 $(document).on('click', '#enter', getName); function getName() { name = $('#user').val().trim(); database.ref('players/' + name).push({ name: name }) } database.ref('players/' + name).child(name).on("child_added
$(document).on('click', '#enter', getName);
function getName() {
name = $('#user').val().trim();
database.ref('players/' + name).push({
name: name
})
}
database.ref('players/' + name).child(name).on("child_added",
function(childSnapshot){
var childKey = childSnapshot.key;
var childData = childSnapshot.val;
console.log('key', childKey)
console.log('data', childData)
}, function (errorObject) {
console.log("The read failed: " + errorObject.code);
})
})
在快照功能中,当我在控制台记录childKey
时,它会显示密钥是用户的名称,这是我在ref('players/'+name)
中创建的路径。但是我需要嵌套在name
节点中的节点的键。我在我的childSnapshot
函数中得到一个错误,指出.child(名称)是无效路径
。还说,
路径必须是非空字符串,并且不能包含“.”、“$”、“[”或“]”
当前,当我在Firebase上创建数据时,它如下所示:
-players
-Johnson
-KWH4mjWbOuptod_vV1o
name: "ajks"
我需要获得johnson下的密钥,即一长串字母和数字,以便我可以引用该特定节点并添加数据、更改数据或更新数据(如名称)。尝试这种方法
var fb_ref= firebase.database().ref('players/' + name)
fb_ref.push({
name: name
})
fb_ref.on('child_added', function (data) {
console.log(data.key);
});
或
请记住一件事,如果您使用高于3.x的firebase版本意味着使用“键”,那么如果您低于3.x的版本意味着使用“键()”,就像这样
fb_ref.push({
name: name
}).then(function(fb_ref){
console.log(fb_ref.key);
})