Вернуть массив undefined с помощью функции asyn c с хранилищем огня - PullRequest
0 голосов
/ 13 июля 2020

У меня есть функция, с помощью которой я хочу вернуть заполненный массив со значениями из firestore bd, но мне нужно дождаться foreach, чтобы этот массив был правильно заполнен.

Я пробую некоторые методы с этого веб-сайта, но могу ' Я не понимаю, что я делаю плохо.

Моя функция:

static async assistencia(id) {
    console.log('Get Assistència ' + id);
    let alumnesId = id;
    var assistenciaAlumne = [];

    db.collection('alumnes')
        .doc(alumnesId)
        .collection('assistencia')
        .get()
        .then((assistencia) => {
            const promises = [];
            assistencia.forEach((assistenciaDoc) => {
                assistenciaAlumne.push([assistenciaDoc.id, assistenciaDoc.data().assistencia]);
                promises.push(db.collection('alumnes').doc(alumnesId).collection('assistencia').get());
            });
            return Promise.all(promises);
        })
        .then(function () {
            return assistenciaAlumne;
        })
        .catch((error) => {
            console.log(error);
        });
}

И я вызываю эту функцию с помощью кнопки с таким кодом:

var array = Alumnes.assistencia('0qSzBxVimwRlurLHNzXp');
    console.log(' array', array);

Да , Выпускники, это класс.

Основная c проблема в том, что этот массив возвращается на консоль:

array 
Promise {<resolved>: undefined}
    __proto__: Promise
    [[PromiseStatus]]: "resolved"
    [[PromiseValue]]: undefined

Что я делаю не так?

1 Ответ

1 голос
/ 14 июля 2020

Прямо сейчас вы возвращаете значение из then(), но никто ничего не делает. Чтобы вернуть его из assistencia , вам нужно всплыть возвращаемое значение.

return db.collection('alumnes')
  ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...