[英]Firebase not filtering query on child value
我的 Firebase 数据库记录具有以下属性:
timestamp: "1603347996"
primaryKey: "EFh4ShrplQ1603347996"
is_default: "0"
message: "Test"
picture: ""
user_id: "135671325"
我试着:
timestamp
对路径中的所有内容进行排序primaryKey
的记录EFh4ShrplQ1603347996
我尝试使用的代码是:
Database.database().reference(withPath: "/chats/123")
.queryOrdered(byChild: "timestamp")
.queryStarting(atValue: "EFh4ShrplQ1603347996", childKey: "primaryKey")
.queryLimited(toFirst: 3)
.observeSingleEvent(of: .value) {
snapshot in
print(snapshot)
}
但是,打印的是: Snap (484208593) <null>
如果我放弃queryStarting(atValue:childKey:)
调用,我会按预期从该路径获得前 3 条记录。
以EFh4ShrplQ1603347996
作为主primaryKey
的记录是第 3 条记录,当路径按timestamp
排序并且在该记录之后依次有 10 条其他记录时,我希望这些记录与我想要的查询匹配。
有什么想法吗?
您误解了queryStarting(atValue:, childKey)
方法的工作原理。 该调用的第一个参数是您订购的属性的值,因此在您的情况下为timestamp
。 第二个参数是开始的节点的键,以防timestamp
值不明确(因此有更多节点具有相同的timestamp
值)。
所以正确的调用是:
Database.database().reference(withPath: "/chats/123")
.queryOrdered(byChild: "timestamp")
.queryStarting(atValue: "1603347996", childKey: "theKeyOfTheNode")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.