Firebase OrderByChild+ EndAt + EqualTo 不适用于移动设备,但适用于 Windows

Firebase OrderByChild+ EndAt + EqualTo doesn't work on Mobile but works on Windows

"usersPost": {
    "post4543": {
       "userID": "X12",
      "text": "Hi"
    },
    "post4544": {
      "userID": "X12",
       "text": "HELLO"
    },
    "post454S4": {
      "userID": "X143",
       "text": "....."
    }
  }

等于 我只想检索某些用户的帖子,比如 "userID": "X12"

EndAt,LimitToLast 没有必要下载所有快照(我有 100 万篇帖子),所以我将下载限制为 5 个结果 only.And 从最后保存的密钥开始

因此我的代码是

OrderByChild("userID").EndAt(lastSavedKey).EqualTo("X12").LimitToLast(5);
//lastSavedKey is the post key "post4544"

这适用于 Windows,但不适用于 Android,因为我收到:

Error firebase Query::EqualTo: Cannot combine equalTo() with endAt()

我阅读了一些关于合并多个查询的问题的帖子。但是我的案例的替代解决方案是什么? 为什么它适用于 Windows? Windows 上没有错误!它完美地工作并且 EndAt 最后保存的密钥。 (我使用Unity编辑器)

要实现分页,您需要记住节点的 两个 个值 start/end 位于:

  • 它的关键
  • 您排序的 属性 的值

如果您只想 return 个 userID 等于 X12 的节点,并以键 lastSavedKey 结束,您 可能 能够做到这一点:

OrderByChild("userID").StartAt("X12").EndAt("X12", lastSavedKey).LimitToLast(5);

我在这里说 可能 ,因为我从未尝试过将 startAt 和 endAt 与键结合使用。如果这不起作用,请删除 StartAt 子句 - 在这种情况下,您可能只是在应用程序代码中删除了一些具有不同 userID 的节点。