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
的节点。
"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
的节点。