В данный момент я немного ломаю голову, потому что не могу понять причину, по которой мой код не загружает комментарии из базы данных должным образом. Он получает идентификаторы для каждого комментария для сообщения из сообщения. база данных (post_comments), но не может получить какие-либо данные?
func loadComments() {
let postCommentRef = Database.database().reference().child("post_comments").child("6AECB02A-CC97-4ECB-8A09-702E254D4CCD")
postCommentRef.observe(.childAdded, with: {
snapshot in
print("snapshot key")
print(snapshot.key)
Database.database().reference().child("comments").child(snapshot.key).observeSingleEvent(of: .value, with: {
snapshotComment in
//print(snapshotComment.value!)
if let dict = snapshotComment.value as? [String : Any] {
let newComment = Comment().transformComment(dict: dict)
self.fetchUser(uid: newComment.uid!, completed: {
self.comments.append(newComment)
self.tableView.reloadData()
print(newComment) <- trying to retrive data, I've posted below what the output of this is.
})
//let photoUrlString = dict["photoUrl"] as! String
}
})
})
}
в моем коде вы можете видеть, что я поместил небольшую функцию печати, чтобы увидеть, какие данные выдает код, вот вывод из журнала отладки.
snapshot key
L_sWOp0w1V8DaGSK7iK
snapshot key
L_sWQI70PogYAtwjla4
snapshot key
hello <-- this is a test uid I created in the DB, treat it like any other key listed above.
Как вы можете видеть, результат функции loadComments()
не дает много.
Я не уверен, нужно ли это, но на всякий случай это помогло. Я сделал скриншот базы данных, чтобы показать, как она на самом деле выглядит ниже.
если требуется какая-либо дополнительная информация, пожалуйста, спросите, и я предоставлю ее, я предоставил только то, что считаю необходимым, и я почти уверен, что это связано с тем, как я получаю данные из базы данных.
EDIT
После некоторой игры мне удалось получить какой-то вывод от второго вызова базы данных, который извлекает ключ в базе данных комментариев, который является теми же двумя, что и в базе данных комментариев, однако значение возвращает ноль .
func loadComments() {
let postCommentRef = Database.database().reference().child("post_comments").child("6AECB02A-CC97-4ECB-8A09-702E254D4CCD")
postCommentRef.observe(.childAdded, with: {
snapshot in
print(snapshot.key)
Database.database().reference().child("comments").child(snapshot.key).observeSingleEvent(of: .value, with: { (snapshotComment) in
print("Snapshot value")
print(snapshotComment.value)
print("Snapshot.key")
print(snapshotComment.key)
//print(snapshotComment.value!)
//if let dict = snapshotComment.value as? [String : Any] {
// let newComment = Comment().transformComment(dict: dict)
// self.fetchUser(uid: newComment.uid!, completed: {
// self.comments.append(newComment)
// self.tableView.reloadData()
// print(newComment)
// })
//let photoUrlString = dict["photoUrl"] as! String
})
})
}
Результат этого кода выглядит следующим образом ..
L_sWOp0w1V8DaGSK7iK <-- these two come from the snapshot.key for post_comments
L_sWQI70PogYAtwjla4 <---^
Snapshot value
Optional(<null>)
Snapshot.key
L_sWOp0w1V8DaGSK7iK
Snapshot value
Optional(<null>)
Snapshot.key
L_sWQI70PogYAtwjla4
Я собираюсь развеять свои надежды и попытаться выяснить источник этой проблемы, если никто не может дать ответ на этот вопрос, я надеюсь, что смогу найти способ ответить на него сам, поскольку я верю, что Структура базы данных, которую я пытаюсь создать, намного эффективнее и обеспечивает лучший пользовательский опыт, если я ошибаюсь, я бы хотел знать лучший способ:)
РЕДАКТИРОВАТЬ # 2
Кажется, я решил свою проблему, ниже я опубликовал подробное описание того, как и что вызывало проблему, а также код, который я использую после решения проблемы