实现下面的辅助功能:
func queryEmail(of displayName: String, completion: @escaping (String?) -> Void) {
let users = FIRDatabase.database().reference().child("Users")
let query = users.queryOrdered(byChild: "display name").queryEqual(toValue: displayName)
query.observeSingleEvent(of: .value) {
(snapshot: FIRDataSnapshot) in
guard snapshot.exists() else {
completion(nil)
return
}
let users = snapshot.children.allObjects as! [FIRDataSnapshot]
precondition(users.count == 1, "Display name isn't unique!")
let userProperties = users.first!.value as! [String: Any]
completion(userProperties["email"] as? String)
}
}
,并使用它像这样:
queryEmail(of: "Name1") {
(email) in
if let email = email {
print("Name1 email is \(email)")
} else {
print("Email not found")
}
}
相关:https://stackoverflow.com/questions/43971814/firebase-querying-for-unique- username-swift –
我知道如何获取所有显示名称的数据,但我不知道如何通过电子邮件到达确切的字段。我的意思是除了“snapshot.value”之外还需要写些什么? @NiravD – alecs09
@begood请检查我的答案是否是你之后的... –