自从我已经编码了一段时间以来,对我的词汇感到抱歉。我似乎无法加载我想要的数据。 Concole日志显示所有值(而不是子项)的值。所以我的数据库是图片,但是控制台日志只显示了2,140,​​70等数字,而childData.laps是未定义的,var averageBoardRef = database.ref('average_board');

javascript - 如何从Firebase正确检索数据?-LMLPHP

averageBoardRef.on('value', function (snapshot) {
    snapshot.forEach(function (childSnapshot) {
        var childData = childSnapshot.val();
        $('#average_laps-display').append(`
            ${childData.laps}
        `);
        console.log(childData)
    })
});


我希望能够拥有childData.laps = 2,或者有人可以告诉我一种更好的解决方法。

最佳答案

您应该循环遍历子节点,或者获取特定的命名子节点的值。您的代码混用了这两种代码,这意味着它们都不如您期望的那样起作用。



如果只想获取laps属性的值,则可以执行以下操作:

averageBoardRef.on('value', function (snapshot) {
    $('#average_laps-display').append(snapshot.val().laps);
});


另外,如果您这样做,则可以加载较少的数据:

averageBoardRef.child('laps').on('value', function (snapshot) {
    $('#average_laps-display').append(snapshot.val());
});




如果要遍历所有属性,并对其值做些事情,那就是:

averageBoardRef.on('value', function (snapshot) {
    snapshot.forEach(function (childSnapshot) {
        var childData = childSnapshot.val();
        console.log(childData); // prints 140, then 2, then 2, then 4, etc
    })
});

关于javascript - 如何从Firebase正确检索数据?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59924703/

10-11 19:52
查看更多