Я использую несколько циклов для извлечения данных из базы данных, но это приводит к извлечению дубликатов данных. Как лучше всего решить эту проблему?
func fetchPost(completion: @escaping ([Post])->()) {
let postRef = self.databaseRef.child("Topics").queryOrdered(byChild: "userId").queryEqual(toValue: "myId")
postRef.observe(.value, with: { (snapshot) in
var resultsArray = [Post]()
var topicIdArray = [Any]()
for topic in snapshot.children.allObjects as! [DataSnapshot] {
let topicId = topic.childSnapshot(forPath: "topicId").value
topicIdArray.append(topicId)
for element in topicIdArray {
let postRef = self.databaseRef.child("posts").queryOrdered(byChild: "topic").queryEqual(toValue: element)
postRef.observe(.value, with: { (snapshot) in
for child in snapshot.children {
let post = Post(snapshot: child as! DataSnapshot)
resultsArray.append(post)
}
completion(resultsArray)
})
}
}
}) { (error) in
print(error.localizedDescription)
}
}