- 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实时数据库
答案 0 :(得分:0)
简而言之,不要在toString()
上呼叫Date.now()
,只需将其保留为数字即可。
4:具有数字值的子项紧随其后,以升序排列。如果 多个子项具有指定的相同数值 子节点,它们按键排序。
5:字符串紧随数字而后 按字典顺序升序排列。如果有多个孩子 指定的子节点具有相同的值,它们是有序的 按字母顺序排列。
如您所见,字符串值总是按数字排序,因此,通过在startAt
上指定字符串,可以确保结果中不会包含带有数字值的条目。由于您输入的所有内容均为数字,因此您的结果为null
。