Javascript Firebase排行榜

Javascript Firebase排行榜,javascript,html,firebase,firebase-realtime-database,Javascript,Html,Firebase,Firebase Realtime Database,我使用的是firebase实时数据库,我试图用JSON制作一个基于点的国家排行榜,但是,当我将对象转换为JSON时,它返回未定义的结果 这是我的代码: var-database=firebase.database(); var userRef=database.ref(“国家”); userRef.orderByChild(“点”)。一次(“值”,函数(快照){ const json2=JSON.stringify(snapshot.val()) console.log(json2) var-t

我使用的是firebase实时数据库,我试图用JSON制作一个基于点的国家排行榜,但是,当我将对象转换为JSON时,它返回未定义的结果

这是我的代码:

var-database=firebase.database();
var userRef=database.ref(“国家”);
userRef.orderByChild(“点”)。一次(“值”,函数(快照){
const json2=JSON.stringify(snapshot.val())
console.log(json2)
var-tr;
var秩=1;
for(var i=0;i
JSON:

{
“西班牙”:{
“国家”:“西班牙”,
“点数”:201
},
“瑞典”:{
“国家”:“瑞典”,
“点数”:101587
}
}
这个循环
for(var i=0;i
迭代
json2
字符串,这可能不是您想要的

相反,您需要循环查看
快照
,然后从中添加单独的值:

var database = firebase.database();
var userRef = database.ref('countries');
userRef.orderByChild("points").once('value', function(snapshot) {
    var tr;
    var rank = 1;

    snapshot.forEach((countrySnapshot) => {
        tr = $('<tr/>');
        tr.append("<td>" + rank + "</td>");
        tr.append("<td>" + countrySnapshot.val().country + "</td>");
        tr.append("<td>" + countrySnapshot.val().points + "</td>");
        $('table').append(tr);
        rank = rank + 1;
    }
});
var-database=firebase.database();
var userRef=database.ref(“国家”);
userRef.orderByChild(“点”)。一次(“值”,函数(快照){
var-tr;
var秩=1;
snapshot.forEach((countrySnapshot)=>{
tr=$('');
tr.append(“+rank+”);
tr.append(“+countrySnapshot.val().country+”);
tr.append(“+countrySnapshot.val().points+”);
$('table')。追加(tr);
秩=秩+1;
}
});

好的,另外,您知道我将如何将点从最高点排序到最低点吗?结果总是按升序从Firebase返回。最简单的方法是在客户端将它们反转,例如调用
prepend
而不是
append