0
我想檢索只有我從firebase數據庫中收到的帖子。從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")
}
})
}
是的,謝謝@VladPulichev。它的工作方式和我明白你的意思,我腦海中的問題是從用戶/收藏夾拉只會帶來一個帖子的關鍵,所以你的解釋真的幫助。我遇到的唯一問題是,現在似乎只需要將正確的數據拉下來就可以了,但只有在控制檯中顯示此消息時才顯示此消息,但它不會顯示在我的表格單元格中,就像在將所有數據拉下時一樣。我已經用顯示控制檯的圖片和編輯的功能編輯了我的問題。 –
@TonyMerritt你需要獲得所有需要的職位數據。像完成處理函數一樣。然後更新表格視圖。但我認爲我已經回答了主要問題:) –
我認爲我已經有了,我可能需要閱讀鱈魚,看看我需要編輯。就像我說的那樣,它可以處理所有數據。謝謝你的時間@Vlad ....你肯定回答了我的問題.. –