Firebase 按日期字符串查询

IT技术 javascript firebase firebase-realtime-database
2021-01-19 03:53:53

我知道可以按上一个问题中的时间戳进行查询,但是,如果日期采用以下格式怎么办:

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

我将如何按日期查询?

2个回答

您已将日期存储为字符串。当 Firebase 订购字符串时,它使用字典顺序。按照这个顺序,"2012-20-03""2012-25-01".

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

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

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

将其转换为时间戳:

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

一般来说 :

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

   }
我用一些虚拟数据制作了一个虚拟火力基地:epilog-a3e16.firebaseio.com/flights.json
2021-03-18 03:53:53
给我 firebase 的 github URL,我将纠正源代码以支持此语法: orderByChild(function(e){return new Date(e.date.split('-').........).getTime()})
2021-03-23 03:53:53
在查询之前,我是否不必在 firebase 上转换所有这些日期?
2021-04-12 03:53:53