我的用户使用自定义用户名注册,但在Firebase数据库中,它显示为用户UID链接。如何解决此代码,以将用户名从链接更改为用户在Firebase数据库中注册的自定义用户名?
if let AuthData = AuthDataResult {
print(AuthData.user.email)
var dict : Dictionary < String, Any> = [
"uid": AuthData.user.uid,
"email": AuthData.user.email,
"ProfileImageUrl": "",
]
Database.database().reference()
.child("users")
.child(AuthData.user.uid)
.updateChildValues(dict, withCompletionBlock: {
(error,ref) in
if error == nil {
print("Done")
在屏幕截图中,您的数据库对象似乎没有一个名为“用户名”的属性。这很有意义,因为快捷代码中的dict
不包含“用户名”键。与预期的一样,“ uid”键的值是用户的UUID。
为什么不将键username
添加到快速代码中的dict
值。然后将username
的值设置为用于收集用户选择的用户名的UITextField
的值吗?它看起来像这样:
if let AuthData = AuthDataResult {
print(AuthData.user.email)
var dict : Dictionary < String, Any> = [
"uid": AuthData.user.uid,
"email": AuthData.user.email,
"ProfileImageUrl": "",
//The following line is added to your original code
"username": usernameTextField.text!
]
Database.database().reference()
.child("users")
.child(AuthData.user.uid)
.updateChildValues(dict, withCompletionBlock: {
(error,ref) in
if error == nil {
print("Done")
但是,如果您提供原因,那么有人可以给您一个更自信的答案。您希望用户的用户名在Firebase的末尾填充。此外,提供一些有关如何收集用户的用户名,电子邮件和密码(即,是否使用UITextField
收集用户名和电子邮件)的上下文。如果是这样,请让我们知道所说的UITextField
的名称。
注意:您可能希望引用数据库以确保尚未使用用户请求的用户名。