Firebase - orderByChild整数不起作用

时间:2018-03-02 22:04:28

标签: javascript firebase firebase-realtime-database

我有一个数据库,我希望按posts(整数)对所有score进行排序,我认为这非常简单,因为我正在做orderByChild('created')它效果很好,但由于某种原因,orderByChild('score')不起作用。

这是我的数据库结构:

enter image description here

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')它就像期待......

任何想法我做错了什么?谢谢!

1 个答案:

答案 0 :(得分:0)

我相信这可能与这条线有关

.startAt(new Date().getTime() - (24 * 3600 * 1000))

这将创建一个startAt查询,该查询目前为1519944842592

这意味着它正试图从该特定数字开始。所以它不是在寻找-1,而是在1519944842592开始查询。

您需要在架构中合并createdAt对象并首先查询。

.orderByChild('created')工作的原因是因为它是startAt查询之前的日期对象,所以它才能正常工作:)