我正在尝试按日期对Firebase日期进行排序,但是它不起作用。
我使用此函数来调用节点
var awardsref = CatalogueDB.ref("cageawards/" + mycagecode).orderByChild('Awarddate');
awardsref.on('value', Awardstable, errData);
这是输出
是否可以根据此日期格式对数据进行排序?
答案 0 :(得分:4)
根据下一页How query data is ordered,不以任何排序方式考虑日期。它首先对空值排序,然后对假值排序,然后对真值,数字,字符串和最后的对象排序。
所有排序都在Lexicographical Order之后进行。
因此,您可能需要使用自己的方法在客户端进行排序。
还有另一篇文章,您可以找到有关如何按日期here进行排序的说明
答案 1 :(得分:3)
正如@GerardoHerrera指出的那样,Firebase不支持按日期排序。但是,如果您根据UNIX时代来分析日期和convert them to milliseconds,则应该能够按照字典顺序对它们进行排序。
const date1 = new Date("04-07-2018").getTime();
date1; // 1523084400000
const date2 = new Date("06-02-2018").getTime();
date2; // 1527922800000
由于date1小于date2,因此它将按升序排序为在date2之前。将这些转换后的毫秒时间值存储在Firebase中,您应该能够按它们对数据集进行排序。
例如
"7MFD4" {
...
"SPE7L018P1428" {
"Awarddate": "04-07-2018",
"AwarddateMS": 1523084400000
...
}
...
}
然后orderByChild('AwarddateMS')
。