【问题标题】:How can I verify if a username on Firebase is available?如何验证 Firebase 上的用户名是否可用?
【发布时间】:2016-06-05 17:39:19
【问题描述】:

在我的 Swift 应用中,注册用户时,系统会提示用户选择用户名。然后,此用户名将存储在 Firebase 实时数据库中,如下所示:self.ref.child("users").child(user!.uid).setValue(["username": usernameResponse]),其中用户名响应是用户输入的值。这作为注册方法的一部分发生:

FIRAuth.auth()?.createUserWithEmail(email, password: passwordUltimate) { (user, error) in

// ...如果错误!= nil {

我想在设置其值之前验证用户名是否可用。是否有某种查询可以用来检查没有重复项?

这是我的数据库,其中包含一些示例数据(qwerty12345 是 uid):

【问题讨论】:

  • 那来自旧的 Firebase。你能帮忙转换一下吗?
  • stackoverflow.com/questions/25294478/…。虽然答案中的代码适用于 2.x 版本的 Firebase 和 Web,但此处也适用相同的方法。

标签: swift firebase firebase-realtime-database firebase-authentication


【解决方案1】:
@IBAction func enterUsername(){

    let enteredUsername = usernameText!.text!
    let namesRef = ref.childByAppendingPath("/usernames/\(enteredUsername)")

    namesRef.observeSingleEventType(.Value, withBlock: {
        snap in

        if (snap.value is NSNull){
            let userNameAndUUID = ["Username" : enteredUsername, "UUID" : self.appDelegate.UUID]
            namesRef.setValue(userNameAndUUID)
            print("first block")
        }else {
            print("second block")
            //do some other stuff
        }
    })
}

交替:

let checkWaitingRef = Firebase(url:"https://test.firebaseio.com/users")
checkWaitingRef.queryOrderedByChild("username").queryEqualToValue("\(username!)")
            .observeEventType(.Value, withBlock: { snapshot in

        if ( snapshot.value is NSNull ) {
            print("not found)")

        } else {
            print(snapshot.value)
        }
 }

【讨论】:

  • users 世界可读是一种不好的做法,因为那里可能有敏感数据。使用数据库规则执行您的策略会更好
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-08
  • 2021-12-26
  • 2021-10-04
相关资源
最近更新 更多