按日期字符串查询Firebase

时间:2016-07-06 05:27:39

标签: javascript firebase firebase-realtime-database

我知道可以通过previous question中的时间戳查询,但是,如果日期采用以下格式,该怎么办:

{
  "lambeosaurus": {
     "date" : "2012-20-03",
     "length" : 12.5,
     "weight": 5000
  },
 "stegosaurus": {
     "date" : "2015-25-13",
     "length" : 9,
     "weight" : 2500
  }
}

我如何按日期进行查询?

2 个答案:

答案 0 :(得分:2)

您已将日期存储为字符串。当Firebase订购字符串时,它使用词典排序。按此顺序,"2012-20-03"出现在"2012-25-01"之前。

这就是您链接到的问题(以及Firebase文档)通常将日期存储为timestamps的原因。这些信息包含有关日期的所有信息,保证正确订购。

或者,您可以将日期存储为字符串。但在这种情况下,您必须确保日期采用按字典顺序排列的格式。对于您的样本:"2012-01-25""2012-03-20"

因此,在这种情况下,您唯一的选择是将数据结构更改为原始问题(和文档)中的内容,或更改为按所需顺序排序的字符串格式。

答案 1 :(得分:1)

将其转换为时间戳:

new Date('2012-20-03'.split('-').reverse().join('/')).getTime()

一般来说:

   function toTimeStamp(dateString){
       return new Date(dateString.split('-').reverse().join('/')).getTime()

   }