728x90
반응형
중복코드 없애기 = middleware 사용하기
A, B, C API가 있다.
모두 동일하게 먼저 User라는 데이터가 있는지 확인한다고 하자.
그럼 A, B, C API를 담당하는 router에 User를 조회하는 프로세스가 사용될 것이다.
개발자란 동일한 코드를 최대한 사용하지 않는다가 나의 개발론이기 때문에 매우 거슬렀다.
그래서 사용한게 middleware다!
middleware를 이용하면 다음 미들웨어로 현재 요청을 넘길 수 있다.
더 자세한 것은 공식문서에서보자.
https://expressjs.com/en/guide/using-middleware.html
next()에 parameters 넣어주기?!
이미 아는 사람들이라면 제목을 보고 어그로 끈다고 할 수 있다.
왜냐하면 next()엔 err 밖에 넣지 못하기 때문이다.
그럼 어떻게 다음 미들웨어에 현재 데이터를 넘겨줄 수 있을까? 🤔
req에 넣어줘!
export const a = async (req: Request, res: Response, next: NextFunction) => {
const userData = await User.find();
// 아래 주목!!
req.body.user = userData;
next();
};
req에 넣어주면 다음 미들웨어에서 req.body.text하면 textData가 잘 나온다!
export const b = async (req: Request, res: Response, next: NextFunction) => {
const { name, age } = req.body.user;
console.log('req.body.user', req.body.user);
};
콘솔로 찍어보면 DB 정보들이 잘 나온것을 알 수 있다.
앞으로 User 정보를 조회해야하는 라우터라면 굳이 User DB를 조회하는 코드 대신 a 미들웨어를 넣어주면 된다!
import { a } from './middleware';
import { b } from './controllers';
// 라우터에 미들웨어 a 넣어주기
router.get('/user/find', a, b);
라우터에 미들웨어 a를 넣어주면 된다.
fin.
728x90
반응형
'All Side > Runtime > NodeJS' 카테고리의 다른 글
[NodeJS] gts로 간편하게 TypeScript 프로젝트 생성하기 - 라이브러리 추천 (0) | 2023.05.02 |
---|---|
fs.rmdir error - ENOENT: no such file or directory, open 'x' (0) | 2023.04.05 |
[YarnBerry] yarn으로 express 초기세팅 오류 해결 - Cannot find module 'x' or its corresponding type declarations.ts(2307) (0) | 2023.03.07 |
인코딩 된 문자열 생성하기 (0) | 2023.02.14 |
백엔드에서 페이지네이션 하는 방법 2가지 MongoDB or JavaScript (0) | 2023.02.10 |
댓글