在JavaScript Firebase中获取子节点的键

Getting the key for a child node in JavaScript Firebase

本文关键字:子节点 获取 JavaScript Firebase      更新时间:2023-09-26

我正试图从子节点数据中获取密钥。

$(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(name) is an invalid path。还说,

,不能包含路径必须非空字符串 ".", "#", "$", "[", 或"]"

当前,当我在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);
            });

fb_ref.push({
              name: name
}).then(function(fb_ref){
   console.log(fb_ref.key);
})

请记住一件事,如果您使用firebase版本3以上。X表示使用"key",如果你的版本小于3。X表示像这样使用"key()"