您好,我想知道如何为当前登录用户读取数据以及如何检索数据。 直到updateName函数的第一个代码在另一个viewController中。函数updateName在另一个ViewController中。 我将数据放在“用户”下,然后在Firebase RealTimeDatabse中有2个键值对,分别称为Firstname = SomeData,LastName = SomeData,如何才能访问当前登录用户的唯一数据。 我更新了代码以称赞为坦率, 问题是它不会将数据读入其中并给出一个空值,我知道为什么,因为由于用户正在创建它,所以用户帐户的uid为空。 那么,当用户创建帐户时,我该如何保存用户名并为其配置文件回叫 你能帮我么 感谢您的提前帮助
let nameDB = Database.database().reference().child("User")
let nameDictionary = ["FirstName" : fullName.text!, "LastName" : lastName.text!]
let uid = Auth.auth().currentUser?.uid
Auth.auth().createUser(withEmail: email.text!, password: password1) { (userInformation, someKindOfError) in
if someKindOfError != nil {
print(someKindOfError!)
} else {
//success
nameDB.child(uid!).setValue(nameDictionary) {
//error
(error, reference) in
if error != nil{
print(error!)
} else {
print("Name saved Sucessful")
}
}
print("Registration successful!!")
}
}
//Different viewController
func updateName() {
let userID = Auth.auth().currentUser?.uid
let fullName = Database.database().reference().child("User").child(userID!)
fullName.observeSingleEvent(of: .value) { (snapShot) in
print("Enter snapShot")
if let snapShotValue = snapShot.value as? [String : String]{
print("Entering to grab the data")
let first = snapShotValue["FirstName"] //as? String
let last = snapShotValue["LastName"] //as? String
print(first, last)
self.fullName.text = "\(first) \(last)"
}
}
数据结构:
{
"User" : {
"fTKigbhqdVfis9SFk7ofsq1k9Gw1" : {
"FirstName" : "Alfred",
"LastName" : "case"
}
}
}
答案 0 :(得分:0)
您正在为这样的用户编写数据:
let nameDB = Database.database().reference().child("User")
nameDB.childByAutoId().setValue(nameDictionary)
然后您将其阅读:
let fullName = Database.database().reference().child("User").child(userID!)
fullName.observeSingleEvent(of: .value) { (snapShot
...
如果仔细看,路径是不同的。您写到/User/$autoId
并从/User/$uid
中读取。用户的UID与childByAutoId
生成的ID不同。
您可能想写信给:
let nameDB = Database.database().reference().child("User")
let uid = Auth.auth().currentUser?.uid
nameDB.child(uid).setValue(nameDictionary)