TL;博士表演在火力地堡基本分頁通過startAt
,endAt
和limit
是非常複雜的,必須有一個更簡單的方法。分頁按時間順序優先火力地堡孩子
我正在構建大量用戶提交的管理界面。我最初的(當前)想法是簡單地獲取所有內容並在客戶端上執行分頁。但是,當獲取超過2000個數據有效載荷的超過2000條記錄(每個包含5-6個小數字/字符串字段)時,會有一個明顯的延遲。
目前所有的條目都通過push
添加,但我有點失去了如何通過龐大的列表分頁。
ref.endAt().limit(10).on('child_added', function(snapshot) {
console.log(snapshot.name(), snapshot.val().name)
})
其結果如下:
-IlNo79stfiYZ61fFkx3 #46 John
-IlNo7AmMk0iXp98oKh5 #47 Robert
-IlNo7BeDXbEe7rB6IQ3 #48 Andrew
-IlNo7CX-WzM0caCS0Xp #49 Frank
-IlNo7DNA0SzEe8Sua16 #50 Jimmmy
首先要弄清楚多少頁有我是否保留一個單獨的計數器,每當有人添加或刪除記錄時都會更新。
其次,因爲我使用的是push
我沒有導航到一個特定的頁面,因爲我不知道最後記錄的名稱爲特定頁面意義的接口方式是這樣,目前不可能:
爲了使它更簡單,我決定只是簡單地有下一個/上一個按鈕,但這也帶來了一個新問題;如果我在以前的結果集使用的第一條記錄的名字我可以使用分頁到下一頁以下:
ref.endAt(null, '-IlNo79stfiYZ61fFkx3').limit(5).on('child_added', function(snapshot) {
console.log(snapshot.name(), snapshot.val().name)
})
這種操作的結果如下:
-IlNo76KDsN53rB1xb-K #42 William
-IlNo77CtgQvjuonF2nH #43 Christian
-IlNo7857XWfMipCa8bv #44 Jim
-IlNo78z11Bkj-XJjbg_ #45 Richard
-IlNo79stfiYZ61fFkx3 #46 John
現在我有下一頁,除了它被移動了一個位置,這意味着我必須調整我的限制並忽略最後一個記錄。
要退回一頁,我將不得不在我到目前爲止收到的每條記錄的客戶端上保留一個單獨的列表,並確定要傳遞給startAt
的名稱。
有沒有這樣做的更簡單的方法,或者我應該回去抓取所有東西?
謝謝,offset()和count()將解決所有分頁問題。 –
有關JavaScript API何時發佈這些功能的更新 - 特別支持AngularFire綁定? –
對於來自@DanKanze的問題+1。這非常棒,特別是對於AngularFire。 – Jake