【问题标题】:Getting the key for a child node in JavaScript Firebase在 JavaScript Firebase 中获取子节点的密钥
【发布时间】:2017-03-25 08:41:46
【问题描述】:

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

$(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 下的密钥,即一长串字母和数字,以便我可以引用该特定节点并添加数据、更改数据或更新名称等数据。

【问题讨论】:

标签: javascript firebase firebase-realtime-database


【解决方案1】:

试试这个方法

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);
})

请记住一件事,如果您使用 3.x 以上的 firebase 版本意味着使用“key”,如果您的版本低于 3.x 则意味着像这样使用“key()”

【讨论】:

    猜你喜欢
    • 2020-09-03
    • 1970-01-01
    • 1970-01-01
    • 2017-11-17
    • 2017-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多