Async Request Handler

Jong-uk·2023년 4월 13일
0

엘리스 온라인 학습

목록 보기
23/39
  • request handler에서 오류를 처리하기 위한 방법
    promise().catch(next)
    async function, try ~ catch, next
  • async의 비동기 처리는 매우 편리하지만, 매번 try, catch문을 작성해야함
  • request handler를 async function으로 작성하면서 try, catch, next를 자동으로 할 수 있도록 구성한 아이디어
  • async handler 선언
const asyncHandler = (requestHandler) => {
  return async (req, res, next) => {
    try{
      await requestHandler(req, res);
    } catch (err) {
      next(err);
    }
  }
}
  • 호출
router.get('/', asyncHandler(async (req, res) => {
  const posts = await Posts.find({});
  if(posts.length < 1){
    throw new Error("Not Found");
  }
  res.render('posts/list', { posts } );
});

해석

  • asyncHandler는 requestHandler를 매개변수로 갖는 함수형 미들웨어
  • 전달된 requestHandler는 try ~ catch로 감싸져 asyncHandler 내에서 실행되고,
    throw 되는 에러는 자동으로
    오류처리 미들웨어로 전달되도록 구성됨.
profile
안녕하세요! 만나서 반갑습니다.

0개의 댓글