在注册 Firebase 之前检查用户名

Posted

技术标签:

【中文标题】在注册 Firebase 之前检查用户名【英文标题】:Checking username before signing up Firebase 【发布时间】:2019-05-17 22:46:20 【问题描述】:

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

这是数据库中“用户”下的json的sn-p:


  "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

【问题讨论】:

请编辑您的问题以在users/credentials 下包含 JSON 的 sn-p(作为文本,请不要截图)。您可以通过单击Firebase Database console 上溢出菜单 (⠇) 中的“导出 JSON”链接来获取此信息。 更新问题以包含 JSON sn-p 【参考方案1】:

您现在在/users/credentials 的每个子节点下检查名为name 的属性。相反,您想要的是检查 /users 的每个子节点以查找位于 credentials/name 的属性,您可以使用以下方法:

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

【讨论】:

以上是关于在注册 Firebase 之前检查用户名的主要内容,如果未能解决你的问题,请参考以下文章

查询 Firebase 用户以检查数据库中是不是存在联系人

检查 Firebase 实时数据库中的现有值

如何检查 Firebase 数据库中用户输入数据的唯一性?迅速

查询Firebase用户以检查数据库中是否存在联系人

如何确保用户使用 Firebase 和 Flutter 登录

在 Firebase-v9 中使用 Typescript 注册用户时如何更新用户配置文件?