У меня есть функция поиска в моем приложении, которая работает, возвращает значения из БД и заполняет текстовые просмотры на моем экране. Я хочу реализовать следующее: если значение для текстового представления обновляется, мы можем нажать кнопку сохранения, и значения, которые были возвращены в результате поиска, будут обновлены под тем же идентификатором БД.
Вот моя структура базы данных:
![enter image description here](https://i.stack.imgur.com/6popg.png)
А вот метод обновления, который я пытаюсь реализовать:
func updateRecord(){
guard let pub: String = searchText.text?.lowercased() else { return }
let databaseRef = Database.database().reference().child("Drinks")
let query = databaseRef.queryOrdered(byChild: "pub").queryStarting(atValue: pub).queryEnding(atValue: "\(String(describing: pub))\\uf8ff")
query.observeSingleEvent(of: .value) { (snapshot) in
guard snapshot.exists() != false else {
print("Error, doesn't exist")
return
}
DispatchQueue.main.async {
let signature = "E"
//adding drink data
let drink = [
"pub": self.pubName.text!.lowercased() as String,
"location": self.pubLocation.text!.lowercased() as String,
"price": self.price.text!.lowercased() as String,
"rating": self.rating.text!.lowercased() as String,
"comment": self.comment.text!.lowercased() as String,
"signature": signature
]
databaseRef.child(--How do I access this token, for the drink in the picture I need to get "Lzsx_Vv5x5WVFsig-Zl"--).setValue(drink)
return
}
}
}
По сути, в моей базе данных мне нужно иметь доступ к автоматически сгенерированному идентификатору, под которым хранятся данные. Я знаю, что метод «updateChildValues» может работать или «setValue» снова, так как я снова сохраняю информацию, но как я могу получить доступ к идентификатору, в котором хранятся данные?
Спасибо, E