gpt4 book ai didi

ios - Firebase 快速检查现有用户

转载 作者:可可西里 更新时间:2023-11-01 00:36:38 25 4
gpt4 key购买 nike

我有 VC,我正在创建一个新用户并添加到 firebase。用户向数据库中插入没有问题,但我无法检查是否已存在具有相同名称的用户。我曾尝试在 firebase 中使用各种查询语句,但没有得到任何乐趣。有谁知道我如何修改我的代码来完成这个?这是:-

 @IBAction func submitUsername(sender: AnyObject) {

if let user = usernameTxtField.text where user != "" {

let username = DataService.ds.REF_USERS.childByAppendingPath("username")

username.observeSingleEventOfType(.Value, withBlock: { snap in

if let usernameDoesNotExist = snap.value as? NSNull {
let currentUser = DataService.ds.REF_USER_CURRENT.childByAppendingPath("username")
self.usernameTxtField.text = user
currentUser.setValue(user)
}
})

dismissViewControllerAnimated(true, completion: nil)

} else {
showAlert("Username Needed", msg: "please choose a username")
}
}

和 Firebase 数据结构

"users" : {
"000591b6-ba88-4670-9cb7-edd79c273eab" : {
"newuser" : "added to FB",
"provider" : "password"
},
"05551c90-27fe-4969-b45d-279a72583857" : {
"newuser" : "added to FB",
"provider" : "password"
},
"0bbff1b0-681a-4fef-adc0-c4779a4b2100" : {
"provider" : "password",
"testing" : "emailtest",
"username" : "richy446"
},
"12f35e7a-2430-49b3-a287-f7b1daf6a121" : {
"newuser" : "added to FB",
"provider" : "password",
"username" : "richy445"
},
"15a45560-cc81-4c2d-bb59-b8ce6b125d68" : {
"provider" : "password",
"testing" : "emailtest",
"username" : "richy445"
},
"1c135936-6dd0-4189-bcd7-e8036e9736f9" : {
"newuser" : "added to FB",
"provider" : "password"
},
"21591e29-f083-452c-b74f-cc567cecb183" : {
"newuser" : "added to FB",
"provider" : "password"
},
"8b385aa7-0e80-426b-a385-5b3317c894d0" : {
"newuser" : "added to FB",
"provider" : "password",
"username" : "richy445"
}
}

最佳答案

检查重复数据的方法有很多种。您拥有的 Firebase 结构似乎有点不一致,因此像这样构建它可能更容易

"000591b6-ba88-4670-9cb7-edd79c273eab" : {
"email" : "test@test.com",
"password" : "password"
},
"05551c90-27fe-4969-b45d-279a72583857" : {
"email" : "test2@test.com",
"password" : "password"
},

1) 让 Firebase 为您代劳。

创建用户时,如果用户名(电子邮件)已经存在,Firebase 将返回错误。在 Firebase 中创建帐户之前,使用此方法将阻止随机数据写入您的 Firebase。

myRootRef.createUser(email, password: pw, withValueCompletionBlock: { error, result in

if error != nil {
self.errMsgField.stringValue = "email/username in use, try again"

} else {
let uid = result["uid"] as! String //the uid of the new user
print("user created as \(uid)")
self.storedDataInUserNode(email, password:pw)
self.authUserWithAuthData( email, password: pw ) //auth the user
// and proceed in starting up the app
}
})

2) 检查 Firebase 中的现有数据。

虽然第一种方法从一开始就停止写入数据,但如果您想检查一般的重复数据,这里有一个模式:

let userName = the userName or email the user entered
let usersRef = Firebase(url:"https://test.firebaseio.com/users")
usersRef.queryOrderedByChild("email").queryEqualToValue("\(userName!)")
.observeSingleEventOfType(.Value, withBlock: { snapshot in

if ( snapshot.value is NSNull ) {
print("not found)") //didnt find it, ok to proceed

} else {
print(snapshot.value) //found it, stop!
}
}

关于ios - Firebase 快速检查现有用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36901048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com