尝试对Firebase数据库进行排序不起作用

时间:2018-10-26 21:37:54

标签: javascript firebase

我正在尝试按日期对Firebase日期进行排序,但是它不起作用。

我具有这种格式的Firebase数据结构 enter image description here

我使用此函数来调用节点

 var awardsref = CatalogueDB.ref("cageawards/" + mycagecode).orderByChild('Awarddate');

    awardsref.on('value', Awardstable, errData);

这是输出

enter image description here

是否可以根据此日期格式对数据进行排序?

2 个答案:

答案 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')