我正在清理代码,并从回调地狱转到异步/等待和try / catch,但我仍然想使代码DRY,因为我有太多的路由,并且在每个请求中都执行相同的try catch。最好的方法是什么?
这是我在GET路由之一中的示例代码。
router.get('/customer', async (req, res, next) => {
try {
const customer = await Customer.find({}).populate('buisness').exec();
return res.status(200).json({
result: customer
});
} catch (e) {
return next(e);
}
});
现在,如果我在每条路线上都重复同样的事情,那就不是遵循DRY代码了。最好的是什么?
答案 0 :(得分:5)
const errorHandlerMiddleware = async (req, res, next) => {
try {
await next();
} catch (err) {
// handle the error here
}
};
router.use(errorHandlerMiddleware);
router.get('/customer', async (req, res, next) => {
const customer = await Customer.find({}).populate('buisness').exec();
return res.status(200).json({
result: customer
});
});
在所有路由之前使用errorHandlerMiddleware
,此中间件将捕获从您的路由引发的所有异常。
现在,每次您的路由中出现异常时,它将被中间件捕获