Tom*_*ton 5 javascript firebase firebase-realtime-database
我试图从我的Firebase数据获得前100个结果,然后是接下来的100个,然后是接下来的100个等等.我尝试过多种方式.
版本1
ref.child('products').orderByChild('domain').startAt(0).endAt(100).once('value').then(function(snapshot) {});
Run Code Online (Sandbox Code Playgroud)
版本2
ref.child('products').orderByChild('domain').startAt(0).limitToFirst(100).once('value').then(function(snapshot) {});
Run Code Online (Sandbox Code Playgroud)
版本3
ref.child('products').startAt(0).endAt(100).once('value').then(function(snapshot) {});
Run Code Online (Sandbox Code Playgroud)
每次返回的快照都为null.无论如何在Firebase中获取我所追求的数据范围?
当您调用orderByChild()任何后续调用时startAt(),endAt()或者equalTo()期望您传入的值为子级.你正在传递一个索引.除非值domain是一个顺序索引(极不可能),否则这将不起作用.
你应该做的是记住domain你得到的最后一个孩子的价值,然后将其传递给startAt()下一个"页面".
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();
});
});
Run Code Online (Sandbox Code Playgroud)
现在你有一个变量lastKnownDomainValue,它有你见过的最后一个域.要获取下一批子项,请将该值传递给startAt():
var nextQuery = productsRef.orderByChild('domain').startAt(lastKnownDomainValue).limitToFirst(100);
Run Code Online (Sandbox Code Playgroud)
然后lastKnownDomainValue当你再次循环孩子时更新.
| 归档时间: |
|
| 查看次数: |
6666 次 |
| 最近记录: |