我有2个与此查询相关的问题:
我在Firebase中运行查询,查询返回我正在查找的结果但是当我尝试访问查询中的数据时,它是nil
如何在查询中访问标记键?这是1深
提前谢谢
查询
.so
JSON结果
ref.child("users")
.queryOrderedByChild("receivePostRequest/status")
.queryEqualToValue(true)
.observeEventType(.Value, withBlock: {snapshot in
这是完整的查询
Optional({
lgmSZ1HnMnSzE71kCLfdxK8AN2G2 = {
age = 18;
email = "lon1@gmail.com";
firstname = Jamie;
lastname = lon;
latitude = "37.3325232";
longitude = "-122.0286527";
profilePic = "users/profilePhoto/W6pK2HHA1TZC9wicnCaODQhHvoi1.jpg";
receivePostRequest = {
status = 1;
tag = tagSample;
};
userId = lgmSZ1HnMnSzE71kCLfdxK8AN2G2;
};
})
JSON
ref.child("users")
.queryOrderedByChild("receivePostRequest/status")
.queryEqualToValue(true)
.observeEventType(.Value, withBlock: {snapshot in
print(snapshot.value["firstname"])
})
答案 0 :(得分:0)
尝试..
print(snapshot.childSnapshotForPath("firstname").value)
答案 1 :(得分:0)
小心1和真实,因为它们会返回不同的结果
如果Firebase中存储的整数值为1
node_0
test: 1
node_1
test: true
node_2
test: 1
如果查询是
queryOrderedByChild("test").queryEqualToValue(true)
只会返回node_1,因为它是真的
同样地
queryOrderedByChild("test").queryEqualToValue(1)
只返回node_0和node_2,因为它们是1
回答这个问题:
print(snapshot.value) //prints all of the data in the node
当你返回.Value时,快照会有孩子,所以一种方法来访问每个孩子的钥匙:
for child in snapshot.children {
let key = child.key as String
print(key)
}
这将打印每个父节点密钥,在这种情况下为lgmSZ1HnMnSzE71kCLfdxK8AN2G2
修改
回应评论/问题
但我也尝试检索
"tag" : "tag 1
从child = snapshot.children循环开始,没有最初明显的方法,所以这里是你如何做到的
for child in snapshot.children {
let receivePostRef = child.childSnapshotForPath("receivePostRequest")
let aTag = receivePostRef.value["tag"]
print("setting = \(aTag)") //print's Tag1
}