每个then()应该返回一个值或抛出-节点JavaScript中的promise / always-return

时间:2018-09-13 11:15:54

标签: javascript node.js firebase google-cloud-firestore

我尝试了示例代码中的代码,但是部署错误时出现错误

42:7  error  Each then() should return a value or throw  promise/always-return

这是代码

db.collection('users').get().then((snapshot) => {
    if (!doc || !doc.exists) {
        throw new Error("data does not exists");
    }
    snapshot.forEach((doc) => {
        return  console.log(doc.id, '=>', doc.data());
    });
})
.catch((err) => {
    return  console.log('Error getting documents', err);
});

2 个答案:

答案 0 :(得分:2)

在上面的示例中,您从forEach函数返回,而不是从那时返回。我将其更改为

return snapshot.map(doc => {
   ...
})

答案 1 :(得分:0)

让我格式化一下,以便更清楚地找出问题所在:

db.collection('users').get()
  .then((snapshot) => {
    if (!doc || !doc.exists) {
      throw new Error("data does not exists");
    }

    snapshot.forEach((doc) => {
      return  console.log(doc.id, '=>', doc.data());
    });
  })
  .catch((err) => {
    return  console.log('Error getting documents', err);
  });

如上所示,

  

。然后

没有返回任何东西,因为里面有返回

  

snapshot.forEach

返回forEach的值,而不返回.then。