我浏览了GitHub上Express server的一些代码示例,发现这个函数用于包装REST API控制器,对它的工作原理感到困惑...
import { RequestHandler } from 'express';
export const catchErrors = (requestHandler: RequestHandler): RequestHandler => {
return async (req, res, next): Promise<any> => {
try {
console.log(req.body) **// returns requestHandler's req parameter //**
return await requestHandler(req, res, next);
} catch (error) {
next(error);
}
};
};
它用于围绕REST API控制器捕获错误,并将其传递到错误处理中间件.这种用法的一个简单例子是:
import {catchErrors} from './error'
export const fetchData = catchErrors(async (req: Request, res: Response) => {
/// perform data fetching here ///
return res.status(200).send()
})
我对catchErrors函数的工作原理感到困惑.据我所知,requestHandler参数指的是原始的REST控制器回调.然而,下一部分的内容是
我在GitHub链接中找到了这个代码:https://github.com/oldboyxx/jira_clone/blob/master/api/src/errors/asyncCatch.ts