当前位置: 代码迷 >> JavaScript >> React Native返回Promise而不是值Firestore
  详细解决方案

React Native返回Promise而不是值Firestore

热度:52   发布时间:2023-06-08 09:23:37.0

因此,我试图从Firestore basen上获取保存在我的用户集合中的ID数组(填充)的多个文档。 我首先获取ID,然后有一个map函数,该函数从食谱集合中查找每个文档并将其分配给变量数据。 问题在于,我不仅获得每个ID的结果,还获得每个ID的承诺。 我如何解决此问题以便仅获取数据?

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 })
            });
    };
};

使用以上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 })
                })
            });
    };
};
  相关解决方案