Firebase数据库输出按字母顺序排序问题
我有以下Firebase查询,可以查找我数据库中的所有系统(数据库称为Faults)并将它们放入表中。问题在于生成的表格按照我将这些项目添加到数据库的顺序,而不是按照字母顺序添加。任何想法,我已经错过了(搞砸了!)?Firebase数据库输出按字母顺序排序问题
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数据库它会为每个小孩返回三条信息:
- 它的值。
- 它的关键。
- 它与其他子节点的相对顺序。
当你调用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);
});
}
弗兰克 - 大量感谢您的快速和优秀的帮助,它的工作完美。有三个小问题使用上面的代码的人应该知道。 1 /在第三行错字,而不是快照。 2/.val需要()添加。最后3 /倒数第二行需要);最后关闭该功能。小事情,容易修复,不应该减损你的答案。再次感谢,我真的很感激。彼得 – PeterW
哎哟...这是一个很小的片段错别字。感谢抓住他们,仍然得到我的意思彼得!我修复了这个片段。 –
'orderByValue',而不是'orderByChild'没有帮助? 来自 - https://firebase.google.com/docs/database/web/lists-of-data#sort_data – xadhix
你好 - 可能是我,但是这导致了这个错误信息。未捕获的错误:Query.orderByValue失败:使用1个参数调用。预计没有。 – PeterW
@PeterW不会在'orderByValue()'里面添加任何内容.. ..不接受参数.. –