實現下面的輔助功能:
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請檢查我的答案是否是你之後的... –