我有一个应用程序,在用户使用Firebase身份验证后,它将数据存储在Firebase数据库上。在存储数据之前,我想检查用户提供的用户名是否已存在于数据库中。因此,如果不存在,我可以为该用户提供唯一的用户名(就像每个用户都有一个唯一的用户名)。因此,我有一个textField
,用户在其中输入他的用户名,然后按Next。然后,应用程序应检查用户名是否存在,并告诉用户是否需要更改用户名。
因此,我用来检查用户名是否存在的代码:
let databaseRef = FIRDatabase.database().reference()
databaseRef.child("Users").observeSingleEventOfType(.Value, withBlock: { (snapshot) in
if snapshot.hasChild(self.usernameTextField.text!){
print("user exist")
}else{
print("user doesn't exist")
}
})
因此,每次按下下一个按钮时,都会调用此代码。问题在于,结果始终与第一次搜索相同(即使在textField值更改后)。
例如,如果我搜索Jose,并且Jose在我的数据库中存在,那么将打印“用户存在”。但是,当我将
textField
更改为不存在的名称时,它仍然显示“用户存在”。 最佳答案
我发现我需要将.Value
更改为FIRDataEventType.Value
if (usernameTextField.text?.isEmpty == false){
let databaseRef = FIRDatabase.database().reference()
databaseRef.child("Users").observeSingleEventOfType(FIRDataEventType.Value, withBlock: { (snapshot) in
if snapshot.hasChild(self.usernameTextField.text!){
print("true rooms exist")
}else{
print("false room doesn't exist")
}
})