如何在nodeJS中使用异步处理错误?

Muh*_*Ali 1 node.js express

我正在清理代码,并从回调地狱转到异步/等待和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);
    }
});
Run Code Online (Sandbox Code Playgroud)

现在,如果我在每条路线上都重复相同的操作,则不会遵循DRY代码。最好的是什么?

Ron*_*gar 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
  });
});
Run Code Online (Sandbox Code Playgroud)

errorHandlerMiddleware在您的所有路由之前使用此中间件,它将捕获从您的路由引发的所有异常。现在,每当您的路由中出现异常时,它将被中间件捕获