코딩/expressJs

expressjs의 mergeParams 사용해보기(매우 간단)

김 숨 2022. 2. 3. 21:21

- 계층 구조의 라우터를 사용 할 때 사용

- 하위 라우터(혹은 자식 라우터)가 상위 라우터(부모 라우터)의 req.params 값을 유지하는 것

- 라우터로 별개의 파일에서 라우팅을 하는데, 상위 라우터의 파라미터가 필요한 경우에 사용함

  ex) 포스트와 댓글 달기 / 여러개의 카테고리와 그 카테고리에 속한 게시글 등등

 

https://expressjs.com/ko/api.html 에서는 이렇게 설명 하고 있다. 

1) 선언하기

child router 파일에 선언

const router = express.Router({ mergeParams: true });

 

2) 사용하기(게시글과 그 게시글에 속한 댓글을 만들 경우)

/*post.js 라우터(parent) */
const commentroute = require('.comments');

//comment url에 post의 idx값을 유지 하도록 설정
router.use('/:idx/comment', commentroute);

 ▲ 게시글(post.js)

/*comment.js 라우터(child)*/
router.get('/', (req, res) => {
    let idx = parseInt(req.params.idx);
    console.log(idx);
    });

 ▲ 해당 게시글의 댓글 (comment.js)

 

 

3) 포스트맨으로 테스트

결과 : 터미널에서 '3'이 출력된다.