我的函数调用没有返回值

问题描述 投票:0回答:1

这是我的代码,我得到了打印在控制台的值,但它没有返回该值。

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;
         });      
    });       
}
javascript google-cloud-firestore return
1个回答
1
投票

由于你使用的是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;
    })
  }

0
投票

两件事情--首先,你需要返回一个承诺,如果你的函数本身正在做异步工作,需要它自己的回调来继续。请看 从承诺的then()返回.

另外,foreach不一定是用来返回转换值的集合,这似乎是你想做的。如果可以的话,我会用map代替。

© www.soinside.com 2019 - 2024. All rights reserved.