使用Date时间戳实时返回orderByChild和startAt firebase而不返回数据

时间:2018-08-22 20:08:44

标签: javascript firebase firebase-realtime-database

- foo
|--- -LK7rNAPKZP7drHK1eb_
      |- timeStamp: 1534966072658
|--- -LKAPfu2lLl2B5zInIhX
      |- timeStamp: 1534965117552
|--- -LKJN97VxOhnE8XoNSQN
      |- timeStamp: 1534946072623

db.ref('foo').orderByChild('timeStamp').startAt(Date.now().toString()).limitToLast(7).once('value', data => {
    console.log(data.val());
}

结果为空。当我不放.startAt时,我可以获取数据,并且实际上是按时间戳排序的。但是,我需要设置startAt,因为我正在进行无限滚动,因此我需要能够指定最后一个timeStamp记录。我究竟做错了什么?我想提取前7条记录

使用Firebase实时数据库

1 个答案:

答案 0 :(得分:0)

简而言之,不要在toString()上呼叫Date.now(),只需将其保留为数字即可。


来自firebase docs

  

4:具有数字值的子项紧随其后,以升序排列。如果   多个子项具有指定的相同数值   子节点,它们按键排序。

     

5:字符串紧随数字而后   按字典顺序升序排列。如果有多个孩子   指定的子节点具有相同的值,它们是有序的   按字母顺序排列。

如您所见,字符串值总是按数字排序,因此,通过在startAt上指定字符串,可以确保结果中不会包含带有数字值的条目。由于您输入的所有内容均为数字,因此您的结果为null