【发布时间】:2017-05-30 17:37:22
【问题描述】:
我只想从 firebase 数据库中检索我喜欢的帖子。
以下是我的数据。我希望该帖子被点赞的用户仅在该帖子被该用户点赞时才显示该帖子。
我已经从 firebase 检索数据,但它会显示所有帖子,而不仅仅是喜欢的帖子。
下面的这段代码是我正在使用的,它的工作原理是如果我点击喜欢它会显示数据,如果我不喜欢它就不会显示数据,但这是显示所有数据。
DataService.ds.REF_USER_CURRENT.observeSingleEvent(of: .value, with: { (snapshot) in
if snapshot.hasChild("favourite") {
print("true Favourits exist")
DataService.ds.REF_POSTS.observe(DataEventType.value, with: { (snapshot) in
self.posts = []
if let snapshot = snapshot.children.allObjects as? [DataSnapshot] {
for snap in snapshot {
print("SNAP: \(snap)")
if let postDict = snap.value as? Dictionary<String, AnyObject> {
let key = snap.key
let post = Post(postKey: key, postData: postDict)
self.posts.append(post)
}
}
}
self.tableView.reloadData()
})
}else {
print("Tony: Couldnt get the data")
}
})
}
从这里编辑 VLADS 答案>>>>>>>
DataService.ds.REF_USER_CURRENT.observeSingleEvent(of: .value, with: { (snapshot) in
if snapshot.hasChild("favourite") {
let refToUser = DataService.ds.REF_USER_CURRENT // <- your userId
refToUser.child("favourite").observeSingleEvent(of: .value, with: { snapshot in
let value = snapshot.value as? NSDictionary
let postsIds = value?.allKeys as! [String]
for postId in postsIds {
let refToPost = Database.database().reference(withPath: "posts/" + postId)
refToPost.observeSingleEvent(of: .value, with: { snapshot in
if snapshot.exists() {
self.notAddedLabel.isHidden = true
print("true Favourits exist")
// refToPost.observe(DataEventType.value, with: { (snapshot) in
self.posts = []
if let snapshot = snapshot.children.allObjects as? [DataSnapshot] {
for snap in snapshot {
print("SNAP: \(snap)")
if let postDict = snap.value as? Dictionary<String, AnyObject> {
let key = snap.key
let post = Post(postKey: key, postData: postDict)
self.posts.append(post)
}
}
}
self.tableView.reloadData()
// })
}else {
self.notAddedLabel.isHidden = false
print("Tony: Couldn't get the data")
}
})
}
})
}else {
print("Tony: No Favs added, couldn't get the data")
}
})
}
【问题讨论】:
标签: swift database firebase firebase-realtime-database