我想显示当前用户发布的帖子列表。 这就是我得到的。我需要从用户结构中获取 uid 。然后我需要检查用户结构中的uid 和posts / uid相同。这就是我不知道该怎么做的原因,因为我不知道你怎么能进入一个有id的帖子,例如:“-Kvs50Et17ilfzdgdhcK”。它需要以某种方式检查已经放置的所有帖子,而不是检查来自用户的 uid与帖子的uid相同。请帮忙!
var Gametext: String = ""
var Consoletext: String = ""
var dataBaseRef: DatabaseReference! {
return Database.database().reference()
}
var post: Post! {
didSet {
let postsRef = dataBaseRef.child("posts/\(Auth.auth().currentUser!.uid)")
let userQuery = postsRef.queryOrdered(byChild: "uid").queryEqual(toValue: Auth.auth().currentUser!.uid)
userQuery.observe(.childAdded, with: { (snapshot) in
print(snapshot.childSnapshot(forPath: "Game").value as? String)
print(snapshot.childSnapshot(forPath: "Console").value as? String)
}) { (error) in
print(error.localizedDescription)
}
}
}
这是我的帖子结构:
{
"posts" : {
"-Kvs50Et17ilfzdgdhcK" : {
"Console" : "Xbox One",
"ExtraInfo" : "Test",
"Game" : "test",
"Gamertag" : "test1244@gamertag",
"photoURL" : "",
"postDate" : 1.5074008811834E9,
"postId" : "C835A03A-9BAF-423E-87F0-60139DA893EB",
"uid" : "7E4vEew5RbMsWmSMijZxT4TzxHh1",
"username" : "dani Kemper"
}
},
这是我的用户结构:
"users" : {
"7E4vEew5RbMsWmSMijZxT4TzxHh1" : {
"Console" : "Xbox One",
"Gamertag" : "test1244@gamertag",
"country" : "Antigua & Barbuda",
"email" : "dani@gmail.com",
"photoURL" : "",
"uid" : "7E4vEew5RbMsWmSMijZxT4TzxHh1",
"username" : "dani Kemper"
}
}
}
答案 0 :(得分:0)
现在您正在阅读数据库中的/posts/7E4vEew5RbMsWmSMijZxT4TzxHh1
。这不是用户帖子的位置,因此使用没有数据的快照调用完成处理程序。由于您尝试从中读取数据,因此代码失败。
您需要使用查询检查每个帖子的uid
属性来从数据库中读取数据:
let postsRef = dataBaseRef.child("posts/\(Auth.auth().currentUser!.uid)")
let userQuery = postsRef.queryOrder(byChild: "uid").queryEqual(toValue: Auth.auth().currentUser!.uid)
userQuery.observe(.childAdded, with: { (snapshot) in
print(snapshot.childSnapshot(forPath: "Game").value as? String)
print(snapshot.childSnapshot(forPath: "Console").value as? String)
}) { (error) in
print(error.localizedDescription)
}
我建议您阅读working with lists of data。花了几个小时阅读和研究这些代码示例,将节省大量的时间和问题。