Код в вопросе фактически ничего не удалит из узла сообщений.
Database.database().reference().child("posts").child("uid").removeValue()
^^^^^
не существует дочернего узла, у которого есть ключ буквальной строки «uid»
Если бы был дочерний узел с ключом «uid», только этот дочерний узел был бы удален. Например.
posts
post_0
author: "test_0"
post_1
author: "test_1"
uid
author: "test_2"
post_2
author: "test_3"
Если структура выглядела так и код был запущен, он удалял бы узел с ключом «uid»
posts
post_0
author: "test_0"
post_1
author: "test_1"
post_2
author: "test_3"
EDIT:
Предположим, я хотел удалить узел post_1 из сообщений. Вот как это будет сделано (есть и другие способы)
Database.database().reference().child("posts").child("post_1").removeValue()
EDIT 2: хорошие вещи
На основании комментариев, актуальной проблемой является OP не знает, как добраться до указанного узла c, который они хотят удалить. Вот два варианта
1) Запрос узла (не рекомендуется). С помощью этого параметра вам нужно будет запросить узел по некоторому значению. Ключевым моментом здесь является то, что значение должно существовать внутри узла. Итак, в моем запросе структуры выше для узла, где author = "test_1". Обратной стороной этого является то, что "test_1" может быть несколько авторов, поэтому эта опция имеет ограничения
2) Рекомендуется Измените модель Swift, чтобы также сохранить ключ узла. Это не указано в вопросе, но обычно tableView поддерживается источником данных, массивом, и этот массив содержит модели, которые соответствуют вашим данным Firebase.
Я обращаюсь к этому на высоком уровне с помощью псевдокода как в вопросе недостаточно кода, знайте особенности.
В этом случае это выглядит как список сообщений, поэтому модель будет
class PostClass {
var post_id = ""
var post_text = ""
var author_uid = ""
var photo_url = ""
}
, а затем массив dataSource для его хранения
var postsArray = [PostClass]()
затем, когда Firebase читается, создайте объект и сохраните ключ вместе с данными в каждом объекте.
postsNode.observe.... { snapshot in
let post = PostClass()
post.post_id = snapshot.key //<- this is the important part
post.post_text = snapshot.childSnapshot("post_text") as? String ?? "No Text"
....
self.postArray.append(post)
}
Итак, теперь все данные с каждого узла сохраняются, и когда он приходит время удалить, просто прочтите этот объект из источника данных, получите post_id и удалите
let post = self.postArray[index of row to delete]
let postId = post.post_id
Database.database().reference().child("posts").child(postId).removeValue()