【发布时间】:2021-01-10 03:21:06
【问题描述】:
我正在尝试获取社区的帖子并通过对每个帖子进行嵌套查询来获取帖子制作者数据,因此我将地图的匿名函数设为异步,所以我必须返回一个承诺,这就是问题所在,我想要返回值的对象而不是承诺,我该如何解决?
export const getComPosts = (comId) => async (dispatch, getState) => {
try {
dispatch({ type: POST_LIST_REQUEST })
await firestore.collection('comPosts').where('comId', '==', comId).onSnapshot(snap => {
const posts = snap.docs.map(async doc => {
const { userId } = doc.data()
const { avatar, displayName } = await (await firestore.collection('users').doc(userId).get()).data()
return { ...doc.data(), avatar, displayName } // I wanna return this object directly not a promise
})
dispatch({ type: POST_LIST_RESPONSE, payload: posts })
})
} catch (e) {
dispatch({ type: POST_LIST_FAIL, payload: e.message })
}
}
【问题讨论】:
标签: javascript reactjs firebase google-cloud-firestore