这是我的代码,我得到了打印在控制台的值,但它没有返回该值。
async function fetchData(uid) {
return firebase.firestore().collection('users_info')
.where("uid","==",uid).get()
.then( async function(querySnapshot) {
var usr;
querySnapshot.forEach(async function(doc) {
usr = await doc.data().name;
console.log(usr);
return usr;
});
});
}
由于你使用的是forEach,我假设你处理的是一个以上的数据项。在这种情况下,最好是将它们全部推入一个数组并返回。我想这样做应该可以达到目的。
async function fetchData(uid) {
return firebase.firestore()
.collection('users_info')
.where("uid", "==", uid)
.get()
.then(async function(querySnapshot) {
var usr = [];
querySnapshot.forEach(async function(doc) {
const temp = await doc.data().name);
usr.push(await doc.data().name))
});
return usr;
})
}
两件事情--首先,你需要返回一个承诺,如果你的函数本身正在做异步工作,需要它自己的回调来继续。请看 从承诺的then()返回.
另外,foreach不一定是用来返回转换值的集合,这似乎是你想做的。如果可以的话,我会用map代替。