Описание
Я использую базу данных реального времени с Google Firebase и пытаюсь проверить, совпадает ли дочернее значение с определенным значением.
![enter image description here](https://i.stack.imgur.com/9Gim5.png)
У меня есть коллекция пользователей , которую я храню в базе данных Firebase.Каждый объект пользователя содержит поле токена.
{
"users" : {
"-LTTvwvs5OMaKO6pyZb-" : {
"accountId" : 1001,
"createdAt" : "2018-12-11 15:22:55",
"email" : "john@doe.com",
"fcmToken" : "duhfkNCIKW8:APA91bGgbzVCcagIhIw8DYFN_LVIKcjtyUiZEk0mxd3QLYkxRjQuGXdSfZMPcvw4maytKef-GXMEFrpH_lLz5QY0OV7qvwtyOll9jjKMH0vEWJUGIyp1iGQ4NZIMQE3kmZ-jZ8kF-1Bc",
"updatedAt" : "2018-12-11 15:22:55"
},
"-LTTwH8BdMe6W1lmhb-b" : {
"accountId" : 1001,
"createdAt" : "2018-12-11 15:24:22",
"email" : "john@doe.com",
"fcmToken" : "e_86qbjpjLE:APA91bHyVEgeH8aZMrn7213ws0-oXeTpdFRwY-FDcAbkQkMnaCdSNp9he6-AvQ0AUIsX-TywAxuWLCZ9BqIRsuyx1ZD9reD6wMeqtfP1swONq-rF6vQzet61DUbLfPXdlZhvxEjI9Cpz",
"updatedAt" : "2018-12-11 15:24:22"
},
"-LTTwNcoaQYri1paUwVD" : {
"accountId" : 1001,
"createdAt" : "2018-12-11 15:24:48",
"email" : "john@doe.com",
"fcmToken" : "e_86qbjpjLE:APA91bHyVEgeH8aZMrn7213ws0-oXeTpdFRwY-FDcAbkQkMnaCdSNp9he6-AvQ0AUIsX-TywAxuWLCZ9BqIRsuyx1ZD9reD6wMeqtfP1swONq-rF6vQzet61DUbLfPXdlZhvxEjI9Cpz",
"updatedAt" : "2018-12-11 15:24:48"
},
"-LTUv-aBEaQDrvvMrlAG" : {
"accountId" : 1001,
"createdAt" : "2018-12-11 18:58:25",
"email" : "john@doe.com",
"fcmToken" : "eOaNDdd2DXI:APA91bGzgcudlScng9TuEgSUY9ahA2pXVgl7AKxmkdX9ubw6uA5livNcJUlcI5pHYwn9fI7kc_9od5AbGrXm4wZPul_gI7qcGarTQTwkxq9zEKgovX0nWDDpDtNCLiWIaON6MWu5XLbW",
"updatedAt" : "2018-12-11 18:58:25"
}
}
}
iOS Swift 4
С другой стороны, на моем телефоне у меня есть 1 токен
Отл.
. "DuhfkNCIKW8: APA91bGgbzVCcagIhIw8DYFN_LVIKcjtyUiZEk0mxd3QLYkxRjQuGXdSfZMPcvw4maytKef-GXMEFrpH_lLz5QY0OV7qvwtyOll9jjKMH0vEWJUGIyp1iGQ4NZIMQE3kmZ-jZ8kF-1Bc"
Я пытаюсь сравнить этот маркер ?? всех маркеров в моей базе данных Firebase
Код
func storeToFirebaseDatabase() {
let ref = Database.database().reference()
let usersRef = ref.child("users")
let id = usersRef.childByAutoId().key
let fcmToken = UserDefaults.standard.string(forKey: "fcmToken")
consoleLog(fcmToken)
let values =
["accountId": loginAccount.id!,
"email": loginAccount.username,
"fcmToken": fcmToken
] as [String : Any]
ref.root.child("users").observe(DataEventType.value, with: { (snapshot) in
if snapshot.exists() {
for child in snapshot.children {
let token = (child as! DataSnapshot).childSnapshot(forPath: "fcmToken").value as! String
if(token != fcmToken){
usersRef.child(id!).setValue(values, withCompletionBlock: { (err, ref) in
if err != nil {
print(err.self as Any)
return
}
print("Successfully saved user in Firebase DB")
})
break
}
}
}
}) { (error) in
print(error.localizedDescription)
}
}
Результат
По некоторым причинам токен продолжает вставляться, кажется, что мой if-check работает вообще.
Как можно отладить это дальше?