在注册Firebase之前检查用户名

时间:2019-05-17 22:46:20

标签: ios swift firebase firebase-realtime-database

使用snapshot.exists()之后,用户名将始终在注册后返回为可用状态。如何更改代码以正确检查用户名是否已被使用?

这是数据库中“用户”下的json片段:

{
  "UserID#" : {
  "credentials" : {
  "name" : "testuser",
  },
 }
}  

我的代码当前如下所示:

let usersDB = Database.database().reference()
var taken = false
  usersDB.child("users").child("credentials").queryOrdered(byChild:"name").queryEqual(toValue: username.lowercased()).observeSingleEvent(of: .value, with: { (snapshot) in

        if snapshot.exists() {
            taken = true
            print("Username is not available.")
            usernameAlert()
        } else { 
          print("User is available")
        }

无论用户名是否已经在数据库中使用,快照都会说它不存在。

我尝试过的解决方案均未成功: check if the username exist in Firebase Query users in Firebase to check if username exists during sign up process Firebase querying for unique Username swift Check if user exists with username using Swift and Firebase Swift & Firebase | Checking if a user exists with a username

1 个答案:

答案 0 :(得分:1)

您现在正在/users/credentials的每个子节点下检查名为name的属性。相反,您想要的是检查/users的每个子节点在credentials/name处的属性,您可以这样做:

usersDB.child("users").queryOrdered(byChild:"credentials/name").queryEqual(toValue: ...