Это не тот вопрос, который обязательно имеет «решение», но мне было интересно, не вызовет ли этот код проблемы с памятью при гораздо большем масштабировании.

        ref.child("Teams").observeSingleEvent(of: .value, with: { (snapshot) in
            if snapshot.hasChild(self.teamName.text!){
                //Sets the a single team's values
            } else {
                //Displays a missing team alert
                let alert = UIAlertController(title: "Error" , message: "Team does not exist", preferredStyle: .alert)
                let actio1n = UIAlertAction(title: "Ok" , style: .cancel , handler: nil)
                alert.addAction(actio1n)
                self.present(alert, animated: true, completion: nil)
            }
        })

Мне интересно, будет ли Firebase просто загружать уровень поверхности (ID каждой отдельной команды), или он будет загружаться более подробно. Что ты думаешь?

0
David Krakauer 4 Апр 2017 в 19:41

2 ответа

Лучший ответ

Firebase выберет ПОЛНОЕ дерево в Teams. Подробнее здесь:

[...] когда вы извлекаете данные в определенном месте в вашей базе данных, вы также извлекаете все его дочерние узлы [...]

3
Mihai Fratu 4 Апр 2017 в 17:12

Как сказал Михай: наблюдение за узлом вернет весь этот узел.

Чтобы проверить, существует ли конкретный дочерний узел, просмотрите только этот дочерний узел:

ref.child("Teams").child(self.teamName.text!).observeSingleEvent(of: .value, with: { (snapshot) in
    if snapshot.exists(){
        ...
    }
})
1
Frank van Puffelen 4 Апр 2017 в 18:26