我正在嘗試查詢以查找與某個電子郵件相匹配的用戶。當我執行查詢時,我會收到數據庫中的所有電子郵件。我的最終目標是通過他或她的電子郵件找到該用戶,然後更新InMatch
和SearchingForUser
的關鍵值。這是我的代碼:Firebase查詢 - 查找用戶匹配的電子郵件
func fetchUsersSearchingForMatch() {
ref = FIRDatabase.database().reference()
let user = AppUser()
ref.child("users").observe(.childAdded, with: { (snapshot) in
if let dictionary = snapshot.value as? [String: AnyObject] {
user.userEmail = (snapshot.value as? NSDictionary)?["email"] as? String
user.searchingForMatch = ((snapshot.value as? NSDictionary)?["SearchingForMatch"] as? Bool)!
print(dictionary)
if user.searchingForMatch == true {
self.users.append(user)
self.foundUser = self.users[0]
print("this is your foundUser \(self.foundUser.userEmail)")
print("this number of users are searching for a match: \(self.users.count)")
}
}
self.foundUserSearchingForMatch()
})
}
func foundUserSearchingForMatch() {
if user.inMatch == false {
let query = self.ref.child("users").queryOrdered(byChild: "email").queryEqual(toValue: foundUser.userEmail)
print("this is the query \(query)")
}
}
我沒有做任何更新,直到我知道我選擇了正確的用戶。當我這樣做時,你如何更新這些值?我可以在查詢內做到嗎?
JSON樹:
{"Firebase APP": {
"RANDOM USER ID": {
"USEREMAIL": "[email protected]",
"SearchingForMatch": "true",
"InMatch": "false" }
}
當用戶發現一個比賽,我想改變InMatch
關鍵true
和SearchingForMatch
到false
。
我不想更新我的電子郵件或foundUser
電子郵件。我想更新foundUser
,InMatch
和SearchingForMatch
關鍵值。
我從尋找來自FBDB匹配用戶的電子郵件的方式是,當我檢查是否SearchingForMatch
在我的所有用戶等於true
,如果它不等於true
,我將其追加到一個數組,然後拿到第一元素的電子郵件(現在是foundUser
)。使用foundUser
電子郵件,我想更新該用戶鍵值(InMatch
和SearchingForMatch
)。
給你的JSON樹 – Dravidian