Реагировать на родные возвращения Promise вместо значения Firestore - PullRequest
0 голосов
/ 12 февраля 2019

Итак, я пытаюсь получить несколько документов из Firestore, используя массив идентификаторов (yummed), которые сохранены в моей коллекции пользователей.Сначала я выбираю идентификаторы, а затем у меня есть функция карты, которая находит каждый документ из коллекции рецептов и присваивает его переменным данным.Проблема в том, что вместо получения только результата для каждого идентификатора я получаю обещание для каждого идентификатора.Как я могу это исправить, чтобы получить только данные?

export const yummedRecipesFetch = () => {
    const { currentUser } = firebase.auth();
    return (dispatch) => {
        firebase.firestore().collection(`users`).doc(currentUser.uid)
            .onSnapshot(function(doc) {
                var data = doc.data().yummed.map(function (recipeId) {
                    return firebase.firestore().collection(`recipes`).doc(recipeId).get().then(function(doc) {
                        return { id: doc.id, ...doc.data()};
                    })                    
                })
                console.log(data)
                dispatch({ type: YUMMED_RECIPES_FETCH_SUCCESS, payload: data })
            });
    };
};

1 Ответ

0 голосов
/ 12 февраля 2019

Используя предложение выше Promise.all

export const yummedRecipesFetch = () => {
    const { currentUser } = firebase.auth();
    return (dispatch) => {
        firebase.firestore().collection(`users`).doc(currentUser.uid)
            .onSnapshot(function(doc) {
                var data = doc.data().yummed.map(function (recipeId) {
                    return firebase.firestore().collection(`recipes`).doc(recipeId).get().then(function(doc) {
                        return { id: doc.id, ...doc.data()};
                    })                    
                })
                Promise.all( data).then(function(values) {
                    dispatch({ type: YUMMED_RECIPES_FETCH_SUCCESS, payload: values })
                })
            });
    };
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...