【发布时间】: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 })
});
};
};
【问题讨论】:
-
你不能只获取数据,它是异步的。但是,您可以使用
Promise.all来获得对数据数组的承诺。 -
非常感谢@Bergi,使用了 Promise.all 和 .then(function(values){...}) developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
-
是的,抱歉,现在改了
标签: javascript firebase react-native google-cloud-firestore