我正在嘗試在註冊用戶時檢查用戶名的唯一性。我知道有很多關於它的問題,我經歷了所有的問題,但是我的問題是它沒有做任何事情,它不打印用戶名存在,甚至沒有註冊用戶名。Swift中的Firebase用戶名唯一性
我做錯了什麼?我似乎無法找到答案,唯一可能出錯的是如果嵌套。
這是結構:
AppName:
users
1v2mRJTvrBQ7dMQohUU3rnn7ypI3: //UID
username: John
這是代碼:
func registerUser(){
guard let username = usernameField.text, let email = emailField.text, let password = passwordField.text else{
print("Successfully registered")
return
}
if connectedToNetwork() == true{
if passwordField.text == confirmPasswordField.text{
let usersRef = FIRDatabase.database().reference().child("users")
usersRef.queryOrdered(byChild: "username").queryEqual(toValue: "\(username)")
.observeSingleEvent(of: FIRDataEventType.value, with: { (snapshot) in
if snapshot.value is NSNull{
AuthProvider.Instance.register(withEmail: email, password: password, username: username, loginHandler: { (errMessage) in
if errMessage != nil{
}else{
let user = FIRAuth.auth()?.currentUser
guard let uid = user?.uid else{
return
}
user?.sendEmailVerification() { error in
if let error = error {
print(error.localizedDescription)
} else {
print("Email has been sent to you!")
}
}
//User logged in and redirect
}
})
}else{
print("Username already exists")// It doesn't execute this
}
})
}else{
Util.errorAlert(message: "Passwords do not match!")
}
}else{
Util.errorAlert(message: "The internet connection appears to be offline.")
}
}
我甚至嘗試了不同的安全規則,但這些不應該有任何區別,但那些我所用:
{
"rules": {
".read": "auth != null",
".write": "auth != null",
"Snuses": {
".indexOn": "Brand",
"$username": {
".validate": "!root.child(users').hasChild($username)"
}
}
}
}
我做錯了什麼?
似乎沒問題。什麼是問題?你遇到了什麼錯誤? – GJZ
什麼都沒有,沒有錯誤,什麼都沒有。 –
您是否檢查過所有的開場和結束括號?也許一部分代碼沒有被執行。 – GJZ