Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React本机返回承诺,而不是值Firestore_Javascript_Firebase_React Native_Google Cloud Firestore - Fatal编程技术网

Javascript React本机返回承诺,而不是值Firestore

Javascript React本机返回承诺,而不是值Firestore,javascript,firebase,react-native,google-cloud-firestore,Javascript,Firebase,React Native,Google Cloud Firestore,因此,我试图从Firestore中获取多个文档,这些文档基于保存在我的用户集合中的ID数组(yummed)。我首先获取ID,然后使用map函数从recipes集合中查找每个文档,并将其分配给变量数据。问题是,我不是只得到每个ID的结果,而是得到每个ID的承诺。如何修复此问题以仅获取数据 export const yummedRecipesFetch = () => { const { currentUser } = firebase.auth(); return (disp

因此,我试图从Firestore中获取多个文档,这些文档基于保存在我的用户集合中的ID数组(yummed)。我首先获取ID,然后使用map函数从recipes集合中查找每个文档,并将其分配给变量数据。问题是,我不是只得到每个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 })
            });
    };
};

使用上面的建议

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

您不能只获取数据,它是异步的。但是,您可以使用
Promise.all
获得数据数组的承诺。非常感谢@Bergi,使用了Promise.all和.then(函数(值){…})是的,很抱歉,现在更改了它