繁体   English   中英

Firebase 未过滤子值查询

[英]Firebase not filtering query on child value

我的 Firebase 数据库记录具有以下属性:

timestamp: "1603347996"
primaryKey: "EFh4ShrplQ1603347996"
is_default: "0"
message: "Test"
picture: ""
user_id: "135671325"

我试着:

  • timestamp对路径中的所有内容进行排序
  • 从主键值等于primaryKey的记录EFh4ShrplQ1603347996
  • 获取接下来的 3 条记录

我尝试使用的代码是:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM