我正在尝试使用Firebase V3延迟加载项目。我已经denormalized了我的数据,但我想更进一步。
到目前为止,我尝试使用查询.limitToLast()
过滤掉数据,如下所示:
var limitLength = 20;
var orderNode = "price";
firebase.database().ref(refPath).orderByChild(orderNode).limitToFirst(limitLength).on('value', function(snapshot) {
//success: snapshot.val()
}, function(error){
//error
});
问题是,当我将长度增加到40时,Firebase也会重新加载前20个项目。 limitLength
增加时,这显然会影响我的表现。
如何克服这个问题?即我怎样才能加载21 ... 40位置的数据?
答案 0 :(得分:1)
您无法告诉查询跳过前20个项目。但是你可以告诉它从开始一个特定的项目。有了它你可以完成几乎相同的事情,区别在于你如何实现它以及连续查询对之间的单个重叠项。
var limitLength = 20;
var orderNode = "price";
var latestKey, latestProp;
var location = firebase.database().ref(refPath);
var query = location.orderByChild(orderNode).limitToFirst(limitLength);
query.on('value', function(snapshot) {
snapshot.forEach(function(child) {
latestKey = child.key;
latestProp = child.val()[orderNode];
});
query = location.orderByChild(orderNode).startAt(latestProp, latestKey).limitToFirst(limitLength+1);
}, function(error){
//error
});