异步等待中的错误处理

时间:2018-06-18 08:49:54

标签: mongoose mongoose-schema koa2

如何为Mongoose(当前版本v5.1.5)实现错误处理?

例如,让我们假设以下代码正在查找用户详细信息。

let u = await user.find({ code: id }).lean();
return u;

发生了一些错误,应如何处理?

其次,我们是否可以拥有集中式错误处理函数,只要在任何Mongoose代码中发生错误就会触发该函数,它会被定向到项目中可以处理它的特定函数。

2 个答案:

答案 0 :(得分:3)

这里有猫鼬维护者。第一个问题已得到正确回答。 Re:"其次,我们是否可以拥有集中式错误处理功能,只要在任何一个Mongoose代码中发生错误就会触发该函数,它会被定向到项目中可以处理的特定函数。"试试这个:

async function run() {
 await mongoose.connect(connectionString);

  const schema = new mongoose.Schema({ n: Number });

  schema.post('findOne', function(err, doc, next) { console.log('Got error', err.stack); });

  const Test = mongoose.model('Test', schema);

  console.log(await Test.findOne({ n: 'not a number' }));
}

这是我在Mongoose error handling middleware

上发表的博客文章

答案 1 :(得分:2)

您将在.catch async await方法

中收到错误消息

假设你有一个功能

handleErrors(req, res, err) {
  return res.json({
    success: false,
    message: err,
    data: null
  })
}

这是查询

try {
  let u = await user.find({ code: id }).lean();
  return u;
} catch(err) {
  handleErrors(req, res, err)  //You will get error here
}

您可以查看here了解更多