gpt4 book ai didi

swift - Firebase 查询无法快速运行没有结果

转载 作者:行者123 更新时间:2023-11-30 11:45:12 24 4
gpt4 key购买 nike

我一生都无法让它发挥作用。它永远不会返回结果。如有帮助,我们将不胜感激。

代码:

let ref1 = Database.database().reference().child("profiles").child("zig__zag_@hotmailcom").queryOrdered(byChild: "name").queryEqual(toValue : "Simon Lacasse")

ref1.observe(.value, with:{ (snapshot: DataSnapshot) in
for snap in snapshot.children {
print((snap as! DataSnapshot).key)
}
})

数据库结构: enter image description here

Firebase 规则:

{
"rules": {
".read": true,
".write": true,
"profiles": {

".indexOn": ["name"]

}
}

}

最佳答案

您尝试将同一件事做两次:

let ref1 = Database.database().reference().child("profiles").child("zig__zag_@hotmailcom").queryOrdered(byChild: "name").queryEqual(toValue : "Simon Lacasse")

您首先要访问 /profiles/zig__zag_@hotmailcom (特定用户的节点),然后查询该节点下的所有子节点,以查找具有属性 name 的节点> 等于西蒙·拉卡斯。如果您检查 /profiles/zig__zag_@hotmailcom,您会发现它的子节点已经是单独的属性,因此您在 JSON 树中太深了一层。

您需要直接查找:

let ref1 = Database.database().reference().child("profiles").child("zig__zag_@hotmailcom")
ref1.observe(.value, with:{ (snapshot: DataSnapshot) in
print(snapshot.key)
})

在这种情况下不需要循环,因为您已经在查找要加载的精确节点。

或者您查询与名称匹配的子节点:

let ref1 = Database.database().reference().child("profiles").queryOrdered(byChild: "name").queryEqual(toValue : "Simon Lacasse")
ref1.observe(.value, with:{ (snapshot: DataSnapshot) in
for snap in snapshot.children {
print((snap as! DataSnapshot).key)
}
})

这里需要循环,因为可能有多个子节点匹配查询。

关于swift - Firebase 查询无法快速运行没有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48910116/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com