【问题标题】:Android Firebase Query StartAt()Android Firebase 查询 StartAt()
【发布时间】:2016-12-30 03:14:58
【问题描述】:

我在我的 android 应用程序中使用查询并且遇到了一些问题。我的数据库最终会有成百上千的投票对象。我想一次获得大约 20 个,一旦完成了这 20 个,我将获得下一个 20 个。我可以轻松获得前 20 个,但是当我尝试使用 startAt() 时,查询什么也得不到。

这是我的代码:

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

我已尝试将Integer position 用于lastPollFromQuery,目前正在使用String(投票对象的键)。我也在startAt()orderByChild() 周围洗牌,但这并没有起到多大作用。

我做错了什么?

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案1】:

    您需要同时传递上次投票的时间戳和密钥。假设你是从第一页到第二页,那么你需要知道第1页最后一次poll的时间戳和key。

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

    【讨论】:

    • 谢谢!我最终只使用了时间戳而不是密钥,它的工作原理是一样的。
    • 只要您的时间戳是唯一的,这确实可以工作。请记住,(随着您拥有更多用户)时间戳冲突的可能性会增加,从而使密钥成为唯一的区别因素。
    猜你喜欢
    • 2016-10-14
    • 1970-01-01
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    • 2015-06-28
    • 1970-01-01
    • 2016-11-30
    相关资源
    最近更新 更多