从Firebase检索用户信息

时间:2019-12-24 02:27:52

标签: ios firebase firebase-realtime-database swift4

我知道这个问题经常被问到,但是没有一个解决方案对我有用(我一直在尝试从Read data from firebase swift之类的线程中获得多个解决方案,但它不会在我的控制台上打印任何内容)。 我正在尝试从数据库中检索用户类型,但是我不知道该怎么做。

func pushUserInfo(){
    let ref = Database.database().reference()
    let infoDict = ["First name": firstName.text!, "Last name": lastName.text!, "hours": 0, "isUser" : "user"] as [String : Any]
    let users = ref.child("users").child(username)
    users.setValue(infoDict)
}

显示[“ type”:“ user”]的部分有两个选项,“ user”或admin enter image description here

上面的屏幕截图是Firebase实时数据库的。 我正在尝试检索用户的类型,但是我不知道如何。请帮我解决这个问题,如果可能的话,请解释代码,因为我一般对Firebase不太了解。我尝试阅读他们的firebase文档,但我仍然没有真正理解它。

1 个答案:

答案 0 :(得分:1)

除了您的username属性似乎是两个可选值(可能是firstName.textlastName.text的串联字符串之外,您似乎在设置数据方面还不错。无法查询。第一步是将它们解包成字符串:

let username = "\(firstName.text!) \(lastName.text!)"

完成此操作后,您可以查询以下数据:

let username = "\(firstName.text!) \(lastName.text!)"
let ref = Database.database().reference().child("users/\(username)")
ref.observeSingleEvent(of: .value, with: { (snapshot) in
  // Now you can access the type value
  let value = snapshot.value as? NSDictionary
  let type = value?["type"] as? String ?? ""
  }) { (error) in
    print(error.localizedDescription)
}

您可能还想重新考虑一下属性名称中的空格(也许使用lastName而不是last name)。以后您的代码会更容易。