如果用户名存在阻止他的警告消息检查用户名是否存在于firebase中的正确方法
这是我的代码
@IBAction func SignUp(_ sender: Any) {
if username.text != nil, email.text != nil, password.text != nil, fullname.text != nil {
activityIndicator.startAnimating()
Auth.auth().createUser(withEmail: email.text!, password: password.text!, completion: { (user, error) in
if error != nil {
AlertController.showAlert(self, titel: "Error", message:".Fill all fields\n .User do exists\n .Network error ")
self.activityIndicator.stopAnimating()
return
}
let uid = user?.uid
let storageRef = Storage.storage().reference(forURL: "gs:.......appspot.com").child("profile_image").child(uid!)
if let profileImg = self.selectedImage, let imageData = UIImageJPEGRepresentation(profileImg, 0.1){
storageRef.putData( imageData, metadata: nil, completion: { (metadata, error) in
if error != nil{
return
}
let profileImageUrl = metadata?.downloadURL()?.absoluteString
let ref = Database.database().reference()
let usersReferance = ref.child("users")
let newUserReferance = usersReferance.child(uid!)
newUserReferance.setValue(["fullname": self.fullname.text, "username": self.username.text, "email": self.email.text, "password": self.password.text, "profileImageUrl": profileImageUrl])
})
}
self.dismiss(animated: true, completion: nil)
self.activityIndicator.stopAnimating()
})
}
}
答案 0 :(得分:0)
我不知道您如何构建Firebase实时数据库,但您可以使用DataSnapshot接口中的exists()
函数:
如果此DataSnapshot包含任何数据,则返回true。它比使用snapshot.val()!== null。
更有效
以下是Firebase文档中的示例:
// Assume we have the following data in the Database:
{
"name": {
"first": "Ada",
"last": "Lovelace"
}
}
//Test for the existence of certain keys within a DataSnapshot
var ref = firebase.database().ref("users/ada");
ref.once("value").then(function(snapshot) {
var a = snapshot.exists(); // true
var b = snapshot.child("name").exists(); // true
var c = snapshot.child("name/first").exists(); // true
var d = snapshot.child("name/middle").exists(); // false
});
您可以创建一个存储当前使用的所有用户名的特定节点,并使用此存在方法检查该节点是否存在,您将显示警报并阻止注册过程。如果没有,您可以继续注册过程。
但是在尝试检查之前调用createUser方法。
更新:
exists()
函数检查用户输入的用户名是否已存在。如果存在,请显示您的提醒。如果没有继续您的注册过程。