【问题标题】:React native returns Promise instead of value FirestoreReact native 返回 Promise 而不是值 Firestore
【发布时间】:2019-07-06 11:19:11
【问题描述】:

所以我试图根据保存在我的用户集合中的一组 ID (yummed) 从 Firestore 获取多个文档。我首先获取 ID,然后我有一个 map 函数,它从食谱集合中找到每个文档并将其分配给可变数据。问题是,我得到的不是每个 ID 的结果,而是每个 ID 的 Promise。我该如何解决这个问题才能只获取数据?

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

【问题讨论】:

标签: javascript firebase react-native google-cloud-firestore


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-06
    • 1970-01-01
    • 2022-12-22
    • 2020-11-28
    • 2017-01-11
    • 2020-11-20
    • 2021-06-26
    相关资源
    最近更新 更多