Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Error handling in async await

How can you implement error handling for Mongoose (current version v5.1.5)?

For example, let's assume the following code where a user detail is being looked up.

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

And some error occurs, how should it be handled?

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.

like image 223
Temp O'rary Avatar asked Oct 19 '25 04:10

Temp O'rary


2 Answers

You will get error in .catch method of async await

Suppose you have a function

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

And here is your query

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

You can check here for more

like image 122
Ashh Avatar answered Oct 22 '25 05:10

Ashh


Mongoose maintainer here. The first question has been answered correctly. Re: "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.", try this:

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

Here's my blog post on Mongoose error handling middleware

like image 40
vkarpov15 Avatar answered Oct 22 '25 06:10

vkarpov15



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!