如何通过键值从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,因为这就是你实际上正在查询。