首页 > 代码库 > [Node] Catch error for async await

[Node] Catch error for async await

When we try to do MongoDB opration, mongoose return Promise, we can use async/await to simply the code:

const mongoose = require(‘mongoose‘);const Store = mongoose.model(‘Store‘);exports.createStore = async (req, res) => {    const store = new Store(req.body);    await store.save();    res.redirect(‘/‘);};

 

The problme here is no error handling, we can use try catch, there is another approach is function composion.

We can define a high order function:

exports.catchErrors = (fn) => {  return function(req, res, next) {    return fn(req, res, next).catch(next);  };};

 

We just need to wrap express router:

router.post(‘/add‘, catchErrors(storeCtrl.createStore));

 

So the following middlewares can handle those error later.

[Node] Catch error for async await