异步等待中的错误处理

Error handling in async await

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

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

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

并且出现了一些错误,应该如何处理?

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

您将在 .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了解更多

这里是 Mongoose 维护者。第一个问题已经正确回答。回复:"Secondly, can we have centralised error handling function which will get triggered whenever an error happens in any of the Mongoose code, it gets directed to a particular function in the project where it can be handled.",试试这个:

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

上的 post 博客