Javascript Firebase结果范围使用startAt和endAt

Javascript Firebase结果范围使用startAt和endAt,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我试图从Firebase数据中获得前100个结果,然后是下100个,然后是下100个等等。我尝试了多种方法 版本1 ref.child('products').orderByChild('domain').startAt(0).endAt(100).once('value').then(function(snapshot) {}); 版本2 ref.child('products').orderByChild('domain').startAt(0).limitToFirst(100).onc

我试图从Firebase数据中获得前100个结果,然后是下100个,然后是下100个等等。我尝试了多种方法

版本1

ref.child('products').orderByChild('domain').startAt(0).endAt(100).once('value').then(function(snapshot) {});
版本2

ref.child('products').orderByChild('domain').startAt(0).limitToFirst(100).once('value').then(function(snapshot) {});
版本3

ref.child('products').startAt(0).endAt(100).once('value').then(function(snapshot) {});

每次返回的快照都为空。Firebase中是否存在获取我要查找的数据范围的方法

调用
orderByChild()
startAt()
的任何后续调用时,
endAt()
equalTo()
期望您传入的值为子级。您正在传递索引。除非
domain
的值是顺序索引(极不可能),否则这将不起作用

你要做的是记住你得到的最后一个孩子的
值,然后将其传递到
startAt()
以进入下一个“页面”

现在,您有了一个变量
lastKnownDomainValue
,它具有您所见过的最后一个域。要获取下一批子项,请将该值传递到
startAt()


然后,当您再次循环子对象时,您会更新
lastKnownDomainValue

难道您不能将
pageQuery
nextQuery
折叠成一个可以接受任何范围的函数吗?@frank van puffelen您是说Firebase不支持有起始值(比如日期)的范围查询吗以及最终价值?如果是这样的话,Firestore也有这样的限制吗?@Aodh范围查询可以在这两种情况下使用起始值和结束值。如果你遇到问题,用最少的代码发布一个问题,以再现你的困境。
var productsRef = ref.child('products');
var lastKnownDomainValue = null;
var pageQuery = productsRef.orderByChild('domain').limitToFirst(100);
pageQuery.once('value', function(snapshot) {
  snapshot.forEach(function(childSnapshot) {
    lastKnownDomainValue = childSnapshot.child('domain').val();
  });
});
var nextQuery = productsRef.orderByChild('domain').startAt(lastKnownDomainValue).limitToFirst(100);