特定のメールに一致するユーザーを検索するクエリを作成しようとしています。クエリを実行すると、データベース内のすべての電子メールが取得されます。最終的な目的は、このユーザーを自分のメールで見つけて、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 TREE:ユーザーが一致するものを見つけたとき
{"Firebase APP": {
"RANDOM USER ID": {
"USEREMAIL": "[email protected]",
"SearchingForMatch": "true",
"InMatch": "false" }
}
、私はfalse
へtrue
とSearchingForMatch
からInMatch
キーを変更したいです。
私は電子メールまたはfoundUser
電子メールを更新しません。 foundUser
、InMatch
、およびSearchingForMatch
のキー値を更新したいとします。
私はFBDBからマッチを探して、ユーザーからの電子メールを取得する方法はSearchingForMatch
が私のすべてのユーザーにtrue
に等しい場合、私はそれが等しいtrue
ない場合、私は配列に追加した後、最初の取得、チェックするときです要素の電子メール(今はfoundUser
です)。メールfoundUser
を使用して、そのユーザーのキー値(InMatch
とSearchingForMatch
)を更新したいとします。
だから、私はちょうどInMatchとSearchingForUserキーEメールを更新したくないあなたのJSONツリー – Dravidian