У меня есть фрагмент кода, который извлекает все сообщения из моей базы данных Firebase. Я пытаюсь заставить код тянуть все сообщения для определенного идентификатора пользователя. Структура моей базы данных такова, что с идентификаторами пользователей связан набор идентификаторов записей.
Код, который я должен вытащить на все посты:
DataService.ds.REF_POSTS.observe(.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.feedTableView.reloadData()
})
Как мне идентифицировать моего текущего пользователя:
_ = Auth.auth().addStateDidChangeListener { (auth,user) in
if let user = user {
let userId = user.uid
print("USER: \(String(describing: userId))")
let newPost = DataService.ds.REF_USERS.child("\(userId)").child("posts")
//print("NEW POST: \(newPost.child)")
newPost.setValue([userPost : true])
}
}
Похоже, мне нужно добраться до дочернего элемента (записей) объекта users, а затем циклически перебирать записи. Как я могу просмотреть (и наблюдать за изменениями) сообщения, связанные с пользователем, вошедшим в систему?
РЕДАКТИРОВАТЬ (Пытаясь просмотреть все сообщения пользователя):
_ = Auth.auth().addStateDidChangeListener { (auth,user) in
if let user = user {
let userId = user.uid
print("USER: \(String(describing: userId))")
let newPost = DataService.ds.REF_USERS.child("\(userId)").child("posts")
newPost.observe(.value, with: { (snapshot) in
self.posts = []
if let snapshot = snapshot.children.allObjects as? [DataSnapshot] {
for snap in snapshot {
print("ERIC SNAP: \(String(describing: snap.value))")
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.feedTableView.reloadData()
})
//print("NEW POST: \(newPost)")
}
}