gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 02:48:31 25 4
gpt4 key购买 nike

我有以下 Firebase 查询,可查找数据库(名为“Faults”的数据库)中的所有系统并将它们放入表中。问题是生成的表是按照我将项目添加到数据库的顺序排列的,而不是按照我想要的字母顺序排列。知道我错过了什么(搞砸了!)吗?

    var theroot = firebase.database().ref("Faults/");
theroot.orderByChild("system").on("value", Show_system_table, errData);

function Show_system_table(data) {

var raw_data = data.val();
var results_array = Object.values(raw_data);

for (i = 0; i < results_array.length; i++) {

var single_item = results_array[i];
var result_name = single_item.system;
var markup = "<tr> <td>" + result_name + "</td> </tr>";
$("#system_tbl").append(markup);
}
}

function errData() {
console.log("Error issues");
}

提前致谢

彼得

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

最佳答案

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

  1. 它的值(value)。
  2. 它的关键。
  3. 它与其他子节点的相对顺序。

当您调用 data.val() 时,您会将结果转换为常规 JSON 对象,不幸的是,该对象仅适用于前两个对象。因此此时项目的顺序丢失了。

要保持顺序,请使用内置的 Snapshot.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);
});
}

关于javascript - Firebase数据库输出字母排序问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47994621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com