我是一个相对较新的Swift程序员,并且我第一次使用Firebase,所以请原谅我可能遇到的任何误解以及我对术语缺乏了解 .
我正在尝试检索有关存储在数据库中的用户的数据(电子邮件和用户名) .
代码成功找到数据库中的userID . 然后使用userID以导航到包含用户名和电子邮件的目录 . 它将这些值存储在 snapshot
中 .
出于某种原因,当打印 snapshot
时,它显示userID,但目录的内容(用户名和密码)显示为 <null>
. 我确定我尝试访问和检索数据的目录是否存在且不为空(它包含用户名和电子邮件) . 我希望 snapshot
存储用户名和电子邮件,但打印显示它没有正确执行,我无法弄清楚原因 .
这是我的代码块:
func checkIfUserIsLoggedIn() {
if Auth.auth().currentUser?.uid == nil {
perform(#selector(handleLogout), with: nil, afterDelay: 0)
} else {
let uid = Auth.auth().currentUser?.uid;
Database.database().reference().child("Users").child(uid!).observeSingleEvent(of: .value, with: { (snapshot) in
print(snapshot)
if let dictionary = snapshot.value as?[String:AnyObject] {
self.userLabel.text = dictionary["name"] as? String
}
}, withCancel: nil)
}
}
这是打印到控制台的内容: Snap (ywU56lTAUhRpl3csQGI8W8WmQRf1) <null>
这是我试图访问的数据库条目并登录到 snapshot
:I'm a new Stack Overflow user and don't have enough experience on the site to be allowed to embed images in posts, so this is the external link
感谢阅读,任何帮助将不胜感激!
2 回答
您在Firebase中的引用是
"users"
,但您在代码中使用.child("Users")
. 确保您的查找与您的节点匹配大小写 . 我发现最好创建一个对该节点的引用,并将其用于写入和读取 .let usersRef = Database.Database().reference().child("users")
Snap (ywU56lTAUhRpl3csQGI8W8WmQRf1) <null>
括号中的部分是指您要观察的结束节点 . 在这种情况下,它指的是uid!
.