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

当多个OrderByChild具有相同的值时,如何在firebase中设置下一个和上一个,firebase,firebase-realtime-database,angularfire2,Firebase,Firebase Realtime Database,Angularfire2,我想得到最受欢迎的职位与最高的投票数一个接一个 this.nextPostObservableList= this.af.database.list('/listOfPost',{ query :{ orderByChild : 'postUpvote', limitToLast : 2, endAt : this.currentPost.postUpvote } }); 在这种情况下,如果我使用postpvote命令bychild,我可以一个接一个地导航。但

我想得到最受欢迎的职位与最高的投票数一个接一个

this.nextPostObservableList=  this.af.database.list('/listOfPost',{
  query :{
    orderByChild : 'postUpvote',
    limitToLast : 2,
    endAt : this.currentPost.postUpvote
  }
});
在这种情况下,如果我使用postpvote命令bychild,我可以一个接一个地导航。但若多篇文章有相同的投票数,那个么我就无法导航(根据上面的代码片段大于2)。在下面的场景中,post2之后。请提出解决办法

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

支持可选的
参数,该参数可传递给
startAt
was。当时,用于
endAt
equalTo
的Firebase SDK文档指出,这些方法的可选
key
参数只能在按优先级排序时使用

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

在使用
endAt
equalTo
时,添加了对AngularFire2的
key
参数的支持,因此下一版本将支持在按子级排序和使用
endAt
时指定

要指定可选的
,可以使用包含
的对象文字,因此检索当前文章及其前一篇文章的查询如下:

this.nextPostObservableList=this.af.database.list(“/listOfPost”{
查询:{
orderByChild:“postpvote”,
利米特洛斯特:2,
结束日期:{
值:this.currentPost.postpvote,
key:this.currentPost.postpvote.$key
}
}
});

Hmm。。。Firebase SDK有一个
endAt,用于此目的,它接受一个额外的参数(要开始的项目的键)。但我不确定这是否包含在AngularFire2中。嗨,Frank,根据文档,endAt中的键参数仅在is OrderBy使用优先级完成时有效:(.我很确定我已经用orderByChild()测试了密钥参数。你能试试吗?@Frankvanpoffelen-是的,
startAt
endAt
的可选参数在AngularFire2中不受支持:(相关源代码为)是的,它似乎还不受支持。让我试着直接使用firebase javascript sdk。空字符串值支持这种情况吗?表示具有值的元素,而不考虑其本身的值,并且以给定的键参数开始/结束。(我做的一个测试不成功,返回的数据包含列表开头的元素,而不是给定的键)我不确定我是否理解您所说的re:empty strings,因为空字符串是一个有效值。如果它对您不起作用,您可以就此提出问题或在GitHub上提出问题。无论哪种方式,我都可能会看到它。这些注释中不太可能有足够的空间来讨论它。获取endAt和startAt不能接受objec的异常t作为参数。为中的
startAt
和中的
endAt
添加了可选键。请确保已安装最新版本(2.0.0-beta-8)。