Callback 함수를 이용하여 구현
callback 함수 : 함수안에서 다른 함수를 호출하는 것
const asyncHandler = (body) => {
return async (req, res, next) => {
try {
await body(req, res);
} catch (err) {
next(err);
}
};
};
// 새로운 게시물 생성
const testNewPost = async(req,res,next) =>{
// ... 코드 생략...
const newPost = await Post.findOne(id)
res.status(201).send(newPost);
}
router.post('/test', asyncHandler( testNewPost));
왜 async(req, res,next) 를 중복해서 사용해야 할까?
조사를 하다가 계속 이해가 안가서 chatGPT에서 질문을 던졌다......
asyncHandler 에서의 async 는 오류 처리를 위한 것이며,
testNewPost에서의 async 는 실제 비즈니스 로직 내의 비동기 작업을 위한 것입니다. 따라서 testNewPost 함수 내에 비동기 작업이 있을 경우, 이 함수는 async 로 선언되어야 합니다.