получить данные из нескольких подузлов в firebase, используя swift? - PullRequest
0 голосов
/ 07 января 2019

enter image description here

Я хочу получить данные из нескольких подузлов? Я могу получить данные с первого подузла, но не могу получить следующий уровень подузла. Мне нужен только раздел аккаунта с firebase

Я использовал эту функцию для извлечения первого подузла.

func compareAccount() {
        REF_DRIVERS.observeSingleEvent(of: .value) { (snapshot) in
            print(snapshot)
        }
    }

Snap (drivers) {
    9AyIYcizavM03ArvmQH1e3xQ7rD3 =     {
        account = Default;
        driverIsOnTrip = 0;
        isPickupModeEnabled = 0;
        provider = Firebase;
        userIsDriver = 1;
    };
    FCuTwkhtrbdBTx7akQI4NL49K5p1 =     {
        account = Default;
        coordinate =         {
            0 = "37.33233141";
            1 = "-122.0312186";
        };
        driverIsOnTrip = 0;
        isPickupModeEnabled = 0;
        provider = Firebase;
        userIsDriver = 1;
    };
    ML2Sxz6l78ZIZ0mO327nGmh0YkP2 =     {
        account = Default;
        driverIsOnTrip = 0;
        isPickupModeEnabled = 0;
        provider = Firebase;
        userIsDriver = 1;
    };
}

func compareAccount() {
        REF_DRIVERS.child("account").observeSingleEvent(of: .value) { (snapshot) in
            print(snapshot)
        }
    }

Когда я пытаюсь распечатать только учетную запись. Печатает этот результат

Snap (аккаунт)

1 Ответ

0 голосов
/ 07 января 2019

Когда вы слушаете узел, вы получаете снимок со всеми данными с этого узла. Если этот снимок содержит дочерние элементы, для которых вы не знаете ключ (идентификаторы драйверов в вашем случае), вы можете выполнить цикл по всем дочерним узлам . Если вы знаете ключ дочернего узла (как, например, свойство account), вы можете использовать childSnapshot(forPath:), чтобы получить этот узел.

Таким образом, комбинируя их, вы можете перебирать драйверы и искать их свойства по имени:

REF_DRIVERS.observeSingleEvent(of: .value) { (snapshot) in
    for case let driverSnapshot as DataSnapshot in snapshot.children {
       print(driverSnapshot.key)
       print(driverSnapshot.childSnapshot(forPath:"account").value)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...