组合orderByChild startAt和limitToFirst时的Firebase查询

时间:2016-04-21 20:36:20

标签: javascript reactjs firebase firebase-realtime-database

我正在尝试设置一个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部分。我甚至尝试过用硬键来解决这个问题而忽略它。

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

我的数据结构如下:

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

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

0 个答案:

没有答案