Это стандартный запрос Firebase.
Чтобы извлечь узлы, содержащие дочерний элемент с определенным значением, мы запрашиваем узлы для соответствующего ключа узла и указываем искомое значение.Они будут возвращены в виде моментального снимка, и их может быть больше одного, поэтому нам нужно перебрать каждый из возвращенных моментальных снимков.
let questionPostsRef = self.ref.child("questionPosts")
let query = questionPostsRef.queryOrdered(byChild: "trackId").queryEqual(toValue: "12345678")
query.observeSingleEvent(of: .value, with: { snapshot in
for child in snapshot.children {
let childSnap = child as! DataSnapshot
let dict = childSnap.value as! [String: Any]
let cat = dict["category"] as! String
let name = dict["name"] as! String
print(childSnap.key, cat, name)
}
})
, и результат будет (предположим, два были найдены)
-Lu9ma9jsd... some category some name
-K999a90k9... some category some name
Это описано в руководстве по Firebase: Работа со списками данных в разделе Сортировка и фильтрация
Теперь вопросы состояния
И я хочу найти trackId, который имеет то же значение, что и моя переменная, а затем получить этот trackId
Конечно, если вы уже знаете trackId, вам не нужно его извлекать, так как он у вас уже есть.,Я предполагаю, что вы хотите вернуть узлы, которые соответствуют этому идентификатору дорожки, чтобы вы могли получить доступ к другим данным, что и делает приведенный выше код.Если вы спрашиваете что-то другое, дайте мне знать.
РЕДАКТИРОВАТЬ: продолжение ОП.Для настройки Firebase это типичный шаблон проектирования в контроллере представления.Оттуда вы можете ссылаться на свою Firebase в этом классе с помощью self.ref (как в моем ответе выше)
import UIKit
import Firebase
import FirebaseAuth
import FirebaseDatabase
import FirebaseStorage
class ViewController: UIViewController {
var ref: DatabaseReference!
override func viewDidLoad() {
super.viewDidLoad()
self.ref = Database.database().reference()