Я использую Firebase в своем проекте Swift / iOS и пытаюсь реализовать проверку, чтобы определить, существует ли уже пользователь в базе данных, когда он входит в поток входа в систему / входа в систему.
Это то, что я сейчас использую для проверки того, существует ли пользователь ... несмотря ни на что, даже если я могу визуально проверить, что пользователь находится в моей базе данных, я всегда получаю результат пользователь не существует.
if let user = Auth.auth().currentUser {
let ref = self.ref.child("users").child(user.uid)
ref.observeSingleEvent(of: .value, with: { snapshot in
self.performSegue(withIdentifier: "GoToMainViewController", sender: nil)
})
} else {
self.performSegue(withIdentifier: "GoToProfileCreationViewController", sender: nil)
}
Я пробовал принять в этих двух SO потоках здесь и здесь , но последовательно получаю один и тот же результат.
РЕДАКТИРОВАТЬ: Это моя структура базы данных
EDIT2: Это полный поток, включая код, в котором я аутентифицировал подписанный у пользователя (по номеру телефона). В обоих местах, где я регистрирую идентификатор пользователя, я получаю идентификатор входа в систему.
Auth.auth().signIn(with: credential) { (authResult, error) in
if let error = error {
let alert = UIAlertController(title: nil, message: error.localizedDescription, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "Cancel", style: .cancel) { actions in
})
self.present(alert, animated: true)
return
}
let userID = Auth.auth().currentUser?.uid
print(userID)
Auth.auth().addStateDidChangeListener { auth, user in
if user != nil{
print("user is not nil")
//self.performSegue(withIdentifier: "GoToJoinChannelsViewController", sender: self)
}
else{
print("user is nil")
//self.performSegue(withIdentifier: "GoToProfileCreationViewController", sender: nil)
}
}
print(userID)
//Check if user exists
if let user = Auth.auth().currentUser {
let ref = self.ref.child("users").child(user.uid)
ref.observeSingleEvent(of: .value, with: { snapshot in
print(snapshot)
//self.performSegue(withIdentifier: "GoToJoinChannelsViewController", sender: nil)
})
} else {
//self.performSegue(withIdentifier: "GoToProfileCreationViewController", sender: nil)
}
Вот так выглядит результирующий снимок:
Snap (sxQLr6p9meZyQi8p8RPrjVxcUi33) {
bio = h;
birthday = "11-Feb-1989";
firstname = n;
lastname = n;
}