2016-12-30 75 views
1

我在我的android應用程序中使用查詢並遇到一些麻煩。我的數據庫最終會有數百或數千個輪詢對象。我希望一次獲得20個左右的數據,一旦我完成了這20個數據,我就可以獲得20個數據。我可以輕鬆獲得前20個數據,但當我嘗試使用startAt()時,查詢只是無法獲取任何數據。Android Firebase查詢開始()

這裏是我的代碼:

pollQuery = rootRef.child(getString(R.string.poll_ref)).startAt(lastPollFromQuery).orderByChild(getString(R.string.timestamp_ref)).limitToFirst(numPollsToLoad); 

我已經使用lastPollFromQueryInteger position嘗試,我目前使用String(民意調查對象的關鍵)。我也在startAt()orderByChild()周圍洗牌,但那並沒有太大的幫助。

我在做什麼錯?

回答

4

您需要傳入時間戳和上次輪詢的密鑰。假設你要從第一頁到第二頁,那麼你需要知道第1頁上次輪詢的時間戳和鍵。​​

pollQuery = rootRef.child(getString(R.string.poll_ref)) 
    .orderByChild("timestamp") 
    .startAt(timestampFromLastPollOfPage1, keyFromLastPollOfPage1) 
    .limitToFirst(numPollsToLoad); 
+0

謝謝!我結束了使用時間戳而不是密鑰,它的工作原理是一樣的。 – Jared

+0

只要您的時間戳是唯一的,這的確可以工作。請記住,(因爲你有更多的用戶)時間戳碰撞的機會將增加,使關鍵唯一的區別因素。 –