2016-12-30 94 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

只要您的时间戳是唯一的,这的确可以工作。请记住,(因为你有更多的用户)时间戳碰撞的机会将增加,使关键唯一的区别因素。 –