我正在尝试设置一个firebase查询,它将为我实现分页 . 与此类似:https://www.firebase.com/blog/2013-10-01-queries-part-one.html#paginate

我的问题是当我尝试结合上面提到的三种方法时 . 例如,我的一个参考文件是这样的: userRef = ref.child('Users').orderByChild('email').startAt(null, end.id).limitToFirst(Number(limit))

所以我有我的用户列表 . 我想通过电子邮件按字母顺序排序 . 我希望这个新查询从旧查询的最后一个条目开始 . 最后我想限制孩子返回的数量为4 .

现在,当我将其中两个方法(例如startAt和limitToFirst)合并到其他列表中时,查询将按预期工作 . 不幸的是,这取决于已在firebase中预先排序的列表 . 这个用户查询会发生什么,firebase只返回第一个限制子项数 . 它基本上忽略了startAt部分 . 我甚至尝试过用硬键进行硬编码而忽略它 .

我知道你可以告诉firebase使用indexOn规则对你的条目进行排序,如果我必须重建我的数据库,我将作为最后的手段(我在制作一些用户后实现了indexOn) . 但我觉得这应该可以在没有indexOn的情况下工作,我不明白为什么它不应该 .

我的数据结构将如下所示:

Root:{ 
  Users:{
    01d1d38d-c780-4c5e-8537-a74432dea86e:{
      email:example@gmail.com, 
      questions: {}, 
      comments: {} 
    } 
  }

有没有办法正确完成此查询?有没有理由不通过这种方式构建查询?