当多个OrderByChild具有相同的值时,如何在firebase中的下一个和上一个

时间:2017-01-22 06:54:19

标签: firebase firebase-realtime-database angularfire2

我想一个接一个地获得最多UpVotes的热门帖子。

this.nextPostObservableList=  this.af.database.list('/listOfPost',{
  query :{
    orderByChild : 'postUpvote',
    limitToLast : 2,
    endAt : this.currentPost.postUpvote
  }
});

在这种情况下,如果我使用postUpvote orderByChild,我可以一个接一个地导航。但是如果多个帖子具有相同的upVote计数,那么我无法导航(根据上面的代码片段大于2)。在下面的场景中超越post2。请提出解决方案。

{
  "post1" : {
    "postUpvote" : 10,
    "postname" : "sample 1"
  },
  "post2" : {
    "postUpvote" : 10,
    "postname" : "Sample 2"
  },
  "post3" : {
    "postUpvote" : 20,
    "postname" : "sample3"
  },
  "post4" : {
    "postUpvote" : 10,
    "postname" : "sample4"
  }
}

1 个答案:

答案 0 :(得分:3)

支持可传递给key的可选startAt参数为added in AngularFire2 2.0.0-beta.7。那时,endAtequalTo的Firebase SDK文档声明,只有在按优先级排序时,才能使用这些方法的可选key参数。

此文档已更新,并声明在订购子级,值或优先级时支持该文档。

使用keyendAt时,PR添加了对AngularFire2的equalTo参数的支持,因此下一个版本将支持指定{{1}在按孩子排序并使用key

要指定可选的endAt,您可以使用包含keyvalue的对象文字,因此您的查询可以检索当前帖子及其上一篇文章,就像这样:

key