Swift Firebase:查询没有父键的子节点
问题描述:
好吧,我有以下结构,我想拉出所有包含注册信息的节点。Swift Firebase:查询没有父键的子节点
{
"events" : {
"hsoigjpoirt94pwjfjoijfdg" : {
"coverImageURL" : "http://www.who.int/about/Logo-WHO.jpg",
"dateTime" : "22 May, 2pm",
"eventDescription" : "Lorem ipsum ...",
"eventID" : "hsoigjpoirt94pwjfjoijfdg",
"lat" : 1.2945,
"lon" : 103.8822,
"registered" : {
"NJqoJ4iMTyXGGqfKADoKDLhDYQj1" : true
},
"title" : "Volunteer at WHO"
},
"hvasdhpoifah98whfaksad" : {
"coverImageURL" : "http://s3.amazonaws.com/patientslikeme/organizations/11/NKF_D_NEWE_RGB-original.png?1317242994",
"dateTime" : "24 July, 2:30pm",
"eventDescription" : "Lorem ipsum ...",
"eventID" : "hvasdhpoifah98whfaksad",
"lat" : 1.432079,
"lon" : 103.836871,
"registered" : {
"NJqoJ4iMTyXGGqfKADoKDLhDYQj1" : true
},
"title" : "Help at Yishun Dialysis"
},
"jioasdifueivaf5262d" : {
"coverImageURL" : "http://www.publichygienecouncil.sg/images/default-source/Photo-Galleries/walk-for-your-kidneys-by-nkf/nkf-litter-picking_25-jan-2014.jpg?sfvrsn=6",
"dateTime" : "12 Feb, 3-6pm",
"eventDescription" : "Lorem ipsum ...",
"eventID" : "jioasdifueivaf5262d",
"lat" : 1.33831,
"lon" : 103.705326,
"title" : "Charity Concert at NKF"
}
},
}
我想提取全部包括“注册”的关键"NJqoJ4iMTyXGGqfKADoKDLhDYQj1" : true
快照。到目前为止,我尝试用下面的,但它翻出一切:
ref.child("events").queryOrdered(byChild: "registered").observe(.value, with: { (snapshot) in
let snapValues = snapshot.value as! [String: AnyObject]
print(snapValues)
}) { (error) in
print(error.localizedDescription)
}
仅供参考,每个节点都是比赛时,个人可以到注册事件。我想创建视图列出特定用户已注册的所有事件。
答
对,就在我即将放弃的时候,我设法找到了解决方案来获得我想要的快照。下面是我如何去这样做:
ref.child("events").queryOrdered(byChild: "registered").observe(.value, with: { (snapshot) in
for snap in snapshot.children {
let snapDataSnapshot = snap as! FIRDataSnapshot
let snapValues = snapDataSnapshot.value as? [String: AnyObject]
if let snapWithReg = snapValues?["registered"] as? [String: Bool] {
if snapWithReg[userUID]! {
print(snap)
}
}
}
}) { (error) in
print(error.localizedDescription)
}
的捕捉是与“注册”节点和userUID "NJqoJ4iMTyXGGqfKADoKDLhDYQj1" : true
很好听,你找到了一个解决方案的所有卡扣。我可能忽略了一些东西,但是这个代码为'NJqoJ4iMTyXGGqfKADoKDLhDYQj1'过滤了什么? –
@FrankvanPuffelen道歉,我可能没有更清楚,“NJqoJ4iMTyXGGqfKADoKDLhDYQj1”实际上是userUID。所以snapWithReg实际上打印出“Optional(”NJqoJ4iMTyXGGqfKADoKDLhDYQj1“:true)”。 – Koh