Как мне получить эти данные firebase, чтобы использовать их вне цикла?


Как мне получить эти данные firebase, чтобы использовать их вне цикла?

28.11.2020 03:19:58 Просмотров 49 Источник

У меня есть этот скрипт, который проходит через все дочерние элементы в моей базе данных реального времени из firebase:

methods: {
        submit: function() {
            const gebruikersref = firebase.database().ref('Gebruikers/')
            var self = this
            gebruikersref.once('value', function(snapshot) {
                const lid = self.lidnummer;
                const voornaam = self.voornaam;
                const achternaam = self.achternaam;
                const email = self.email;

                snapshot.forEach(function(childSnapshot) {
                    const data = childSnapshot.val()
                });
                if(lid == data.Lidnummer) {
                        console.log('err')
                    } else {
                        gebruikersref.push({
                            Voornaam: voornaam,
                            Achternaam: achternaam,
                            Email: email,
                            Lidnummer: lid
                        });
                    }
            });
        }
    }

но как мне получить const data = childSnapshot.val() вне цикла foreach, чтобы я мог использовать его здесь:

if(lid == data.Lidnummer) {
  console.log('err')
} else {
    gebruikersref.push({
      Voornaam: voornaam,
      Achternaam: achternaam,
      Email: email,
      Lidnummer: lid
    });
}

В противном случае метод else запускает в x раз больше детей и будет толкать мои данные (которые могут быть толкнуты только один раз) в x раз больше детей

У вопроса есть решение - Посмотреть?

Ответы - Как мне получить эти данные firebase, чтобы использовать их вне цикла? / How do i get this firebase data to use it outside the loop?

Является ответом!
Renaud Tarnec

28.11.2020 04:28:23

Если я правильно понял ваш вопрос, поскольку асинхронный метод push() возвращает ThenableReference, вы можете использовать Promise.all() следующим образом:

    submit: function() {
        const gebruikersref = firebase.database().ref('Gebruikers/')
        var self = this
        gebruikersref.once('value', function(snapshot) {
            const lid = self.lidnummer;
            const voornaam = self.voornaam;
            const achternaam = self.achternaam;
            const email = self.email;

            const promises = [];
            snapshot.forEach(function(childSnapshot) {
                const data = childSnapshot.val()
                if (lid == data.Lidnummer) {
                    console.log('err')
                } else {
                    promises.push(gebruikersref.push({
                                Voornaam: voornaam,
                                Achternaam: achternaam,
                                Email: email,
                                Lidnummer: lid
                            })
                    );
                }
            });
            
            Promise.all(promises);
            
        });
    }
Помочь в развитии проекта:
Закрыть X