我使用limitToLast(5)
如下最初裝載從我的數據庫節點中的最後5個項目:負載更多的數據使用ENDAT
var myData = [];
var firstKey;
var fetchInitialData(category){
firebase.database().ref(category).orderByKey().limitToLast(5).once('value' , function(snap){
addDatToArray(snap);
});
}
fetchInitialData('myCategory');
var addDatToArray = function(snap){
snap.forEach(function(child){
myData.push(child.val());
if(!firstKey){
firstKey = child.key;
}
});
}
我有一個負載更多按鈕,取5個項目並將其推向myData[]
。因爲我存儲在最初的firstKey
取我把它傳遞給endAt()
如下:
var fetchMoreData(category){
firebase.database().ref(category).orderByKey().endAt(firstKey).limitToLast(5).once('value' , function(snap){
firstKey = null;
addDatToArray(snap);
});
}
它工作正常,但問題是,因爲我獲取更多使用endAt()
和endAt()
限制數據包括在結束的項目品脫也。因此,對於每載入更多數據,myData
陣列中的一項重複。
是描述考慮folowimg例如:
我的數據結構
----category
--item1
--item2
--item3
--item4
--item5
--item6
--item7
--item8
--item9
--item10
1.初始取我中讀取最後5個項目它們是項6-10和firstKey
設置爲item6
。顯示給用戶 項是
item6
item7
item8
item9
item10
2.上裝載更多取firstKey
這是item6
被傳遞到endAt()
並且由於endAt()
是包容性的,也取item6
並將其推到顯示給myData[]
項用戶是
item6
item7
item8
item9
item10
item5
item4
item3
item2
item6//fetched again
如何解決這個問題
好主意,但這將技術性地意味着我fetchimg只有4而不是5 ...我想要5個項目取到 –
我看,我想你可以使用'limitToLast(6)''fetchMoreData'方法來得到一個更多的結果? – Grimthorr
是的,我會嘗試。謝謝,但可能有更好的解決方案。如果你發現它,請編輯答案.... :) –