ユーザの登録中にユーザ名の一意性をチェックしようとしています。私はそこにたくさんの質問があることを知っていますが、私はすべての問題を抱えていますが、何もしないということは、ユーザー名が存在し、ユーザー名に登録されていないことを印刷しません。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