我有一个数据库,我希望按posts
(整数)对所有score
进行排序,我认为这非常简单,因为我正在做orderByChild('created')
它效果很好,但由于某种原因,orderByChild('score')
不起作用。
这是我的数据库结构:
score
是一个整数,可以是负数,正数或0。
我正在使用的JavaScript:
this.subscription = this.database.database.ref('/posts/'+this.userData.location)
.orderByChild('score')
.startAt(new Date().getTime() - (24 * 3600 * 1000)) //last 24 hrs
.limitToFirst(10);
this.subscription.on('child_added', (snapshot) => {
this.postFeed.push(snapshot.val())
console.log(this.postFeed)
});
奇怪的是,console.log
甚至没有开火,所以由于某些原因它甚至没有进入那个阶段,但是如果我将.orderByChild('score')
更改为.orderByChild('created')
它就像期待......
任何想法我做错了什么?谢谢!
答案 0 :(得分:0)
我相信这可能与这条线有关
.startAt(new Date().getTime() - (24 * 3600 * 1000))
这将创建一个startAt
查询,该查询目前为1519944842592
这意味着它正试图从该特定数字开始。所以它不是在寻找-1
,而是在1519944842592
开始查询。
您需要在架构中合并createdAt
对象并首先查询。
.orderByChild('created')
工作的原因是因为它是startAt
查询之前的日期对象,所以它才能正常工作:)