如何通过键值从Firebase中检索对象
我是新来的firebase,我有我的firebase项目的这样的结构
我想获得所有的对象,即“有兴趣”的价值等于“男人”
我写了这样的代码,以获得按interes值sorting的所有对象:
let thisUserRef = URL_BASE.childByAppendingPath("profile") thisUserRef.queryOrderedByChild("Interest") .observeEventType(.Value, withBlock: { snapshot in if let UserInterest = snapshot.value!["Interest"] as? String { print (snapshot.key) } }
但我收到零。
您需要遍历所有的键值configuration文件
if let allProfiles = snapshot.value as? [String:AnyObject] { for (_,profile) in allProfiles { print(profile); let userInterest = profile["Interest"] } }
这里_是格式为KYXA-random string
的密钥, KYXA-random string
和configuration文件将是该密钥的元素。
编辑 :
根据文档查询孩子的价值。
尝试thisUserRef.queryOrderedByChild("Interest").equalTo("men")
,然后使用我在回答中指定的内部循环
这是Firebase中的基本查询。 (更新了Swift 3,Firebase 4)
let profileRef = self.ref.child("profile") profileRef.queryOrdered(byChild: "Interest").queryEqual(toValue: "men") profileRef.observeSingleEvent(of: .value, with: { snapshot in for child in snapshot.children { let dict = child as! [String: Any] let name = dict["Name"] as! String print(name) } })
Firebase的遗留文档确实概述了如何使用查询:在此处查找
旧版Firebase查询
新的文档非常薄。
哦,只是指出这个variables; thisUserNode应该可能是profileRef,因为这就是你实际上正在查询。