Мой вызов функции не возвращает значение - PullRequest
0 голосов
/ 16 июня 2020

Это мой код, я получаю значения, напечатанные в консоли, но это значение не возвращается.

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

Ответы [ 2 ]

1 голос
/ 16 июня 2020

Поскольку вы используете 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 голосов
/ 16 июня 2020

Две вещи: во-первых, вам нужно вернуть обещание, если ваша функция сама выполняет асинхронную c работу, которая требует продолжения собственного обратного вызова. См. Возврат из обещания then () .

Кроме того, foreach не обязательно используется для возврата коллекции преобразованных значений, что, похоже, вы пытаетесь там сделать. Я бы заменил его картой, если сможете.

...