【发布时间】:2018-03-14 00:08:08
【问题描述】:
我正在尝试从 swift 查询 firebase 实时数据库。
但是下面的代码不起作用。
var keyvalue = "somevalue"
Database.database().reference().child("users")
.queryOrdered(byChild: "key1").queryEqual(toValue: keyvalue.lowercased())
.observe(.value, with: {(snapshot) in
if snapshot.exists() {
// do some action
// block1
} else {
// do some action if not exist
// block2
}
})
我将断点设置为“block1”、“block2”。 但代码未到达 block1 或 block2。 我的代码有什么问题?
Firebase 数据库结构如下。
{
// some nodes..
"users": {
"auto_key1": {
"key1": "key1val",
"key2": "key2val"
},
"auto_key2": {
"key1": "key1val",
"key2": "key2val"
}
....
}
}
我认为这足以解释结构。
【问题讨论】:
-
请编辑您的问题以在
/users处包含 JSON 的 sn-p(作为文本,无屏幕截图)。您可以通过单击Firebase Database console 中的“导出 JSON”链接来获取此信息。 -
@FrankvanPuffelen 谢谢。我已经更新了问题。
-
JSON 和代码中的值不匹配。但是假设这是一个错字(请始终创建一个有效的MCVE,这样我们就不必假设),监听器应该触发。您确定运行查询的用户有权读取数据吗?
-
是的。有时这不会在数据库中。我的目标是检查值是否已经存在。例如,我将从文本字段中获取字符串,然后我需要检查“用户”节点的任何子节点是否具有该值
-
我的目的是检查是否有“key1”的值完全相同。保持用户名等唯一值。
标签: swift firebase firebase-realtime-database