Javascript Firebase数据库输出字母排序问题

Javascript Firebase数据库输出字母排序问题,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我有下面的Firebase查询,它查找数据库中的所有系统(数据库称为Faults),并将它们放在一个表中。问题是生成的表是按照我向数据库中添加项目的顺序,而不是按照我希望的字母顺序。你知道我错过了什么吗 var-theroot=firebase.database().ref(“Faults/”); root.orderByChild(“系统”)。在(“值”上,显示系统表,错误数据); 功能显示系统表格(数据){ var raw_data=data.val(); var results\u arr

我有下面的Firebase查询,它查找数据库中的所有系统(数据库称为Faults),并将它们放在一个表中。问题是生成的表是按照我向数据库中添加项目的顺序,而不是按照我希望的字母顺序。你知道我错过了什么吗

var-theroot=firebase.database().ref(“Faults/”);
root.orderByChild(“系统”)。在(“值”上,显示系统表,错误数据);
功能显示系统表格(数据){
var raw_data=data.val();
var results\u array=Object.values(原始数据);
对于(i=0;i
提前谢谢

彼得


PS-我知道我应该将var置于循环之外(我稍后会保证!)

当您在Firebase数据库上执行查询时,它会为每个子级返回三条信息:

  • 它的价值
  • 这是关键
  • 它相对于其他子节点的相对顺序
  • 当您调用
    data.val()
    时,您正在将结果转换为常规JSON对象,不幸的是,该对象只有前两个位置。因此,此时项目的顺序已丢失

    要维护订单,请使用内置的
    快照。forEach
    方法:

    function Show_system_table(data) {
        data.forEach(function(snapshot) {
            var single_item = snapshot.val(); 
            var result_name = single_item.system; 
            var markup = "<tr> <td>" + result_name + "</td> </tr>";
            $("#system_tbl").append(markup);
        });
    }
    
    功能显示系统表(数据){
    data.forEach(函数(快照){
    var single_item=snapshot.val();
    var result\u name=单个项目系统;
    var markup=“”+结果_名称+”;
    $(“#系统tbl”)。附加(标记);
    });
    }
    
    orderByValue
    而不是
    orderByChild
    没有帮助吗?From-Hello-可能是我,但这导致了此错误消息。未捕获错误:Query.orderByValue失败:使用1个参数调用。不需要。@PeterW不要在
    orderByValue()中添加任何内容。
    。。不接受参数..谢谢Peter-这没有得到正确的(期望的)顺序。这是建议更改const theroot=firebase.database().ref()的代码;theroot.child('Faults').orderByValue().on('value',Show_system_table,errData);-结果和以前一样。下面Frank给出的解决方案对我很有效,但我感谢您为帮助我而提供的两种意见。向彼得·兰克致意——非常感谢你快速而出色的帮助,它工作得非常完美。使用上述代码的任何人都应该注意三个小问题。1/第三行是一个打字错误,是它的快照,而不是snapshow。2/val需要()添加。最后3/第二到最后一行需要);最后关闭函数。小事情,容易解决,不应该影响你的回答。再次感谢,我真的很感激。彼得鲁奇。。。在这样一个小片段中有很多拼写错误。谢谢你抓住了他们,并且仍然明白我的意思,彼得!我修正了片段。
    function Show_system_table(data) {
        data.forEach(function(snapshot) {
            var single_item = snapshot.val(); 
            var result_name = single_item.system; 
            var markup = "<tr> <td>" + result_name + "</td> </tr>";
            $("#system_tbl").append(markup);
        });
    }