Извлечение объекта из узла в Firebase, если у узла есть объект currentuser.uid и отображается в моем UITableViewCell - PullRequest
0 голосов
/ 17 декабря 2018

Моя структура базы данных находится в моем приложении для iOS

enter image description here

Мне нужно получить все холодильники, которые ID текущего пользователя отображают в виде таблицы.После просмотра всех тем в течение длительного времени я не получил правильного ответа.

Вот мой код Swift, который не делает то, что мне нужно.Я полагаю, что запутался в запросах:

let fridgeDB = Database.database().reference()
    let fridgeDBRef = fridgeDB.child("fridges")
    guard let uid = Auth.auth().currentUser?.uid else {return}

    let queryRef = fridgeDBRef.queryOrdered(byChild: uid)
    queryRef.observe(.childAdded) { snapshot in
        let snapshotValue = snapshot.value as! Dictionary<String,AnyObject>
        print("snapshotValue: \(snapshotValue)")
        let name = snapshotValue["FridgeName"]!
        let fridge = Fridge()
        fridge.fridgeName = name as! String
        self.fridgeUnits.append(fridge)
        self.configureTableView()
        self.fridgeList.reloadData()

1 Ответ

0 голосов
/ 17 декабря 2018

Вы довольно близки.

Ваш запрос должен состоять из двух вещей: 1) определить узел для запроса и 2) определить, к чему вы хотите обратиться.

узел, который вы запрашиваетевы хотите запросить на самом деле UID, и вы хотите запросить, чтобы увидеть, если это правда.

let itemsRef = self.ref.child("fridges")
let thisUserQuery = itemsRef.queryOrdered(byChild: uid).queryEqual(toValue: true)
thisUserQuery.observeSingleEvent(of: .value, with: { snapshot in
    guard let foundFridges = snapshot.children.allObjects as? [DataSnapshot] else {return}
    for fridge in foundFridges {
        let name = fridge.childSnapshot(forPath: "FridgeName").value as! String
        print(fridge.key, name)
    }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...