我有一个应用程序,在用户使用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")
            }


        })

10-08 08:30
查看更多