Express + MongoDB 실습
req.params
로 받은 값과 res.json({})
으로 전달할 값을 구조 분해 할당으로 처리하는 부분 이해하기.
ES6 구조 분해 할당 문법을 자바스크립트 알고리즘 문제를 풀면서 여러 개의 변수 초기화 한 줄로 작성하기, 두 값 swap하기 정도로만 사용해보았는데, 실전 강의를 들으면서 JSON이나 array로된 object typed 데이터들을 처리할 때 유용하게 쓰인다는 걸 알게되어서 다시 정리해보았다.
강의 quiz 부분에서 카트에 들어 있는 상품을 조회하는 GET 요청 API를 goods.js 파일로 옮기는 문제가 있었다. 그러나, 옮기고 난 뒤 GET 요청에서 {}
비어있는 object만이 반환되었다. 옮기는 과정에서 goods/cart
로 url을 변경해주는 작업만 했는데 변경시킨 이후로 해당 미들웨어 안에서 console.log()도 찍히지가 않았었다.
router.get("/goods/:goodsId", (req, res) => {
let { goodsId } = req.params;
console.log(req.params);
let [detail] = goods.filter((goods) => Number(goodsId) === goods.goodsId);
console.log(detail);
res.json({ detail });
});
1) let {goodsId} = req.params
;
Without object destructuring: { goodsId: '1' }
With object destructuring: '1' - object의 key값과 같은 variable을 사용해야 한다
2) let [detail] = goods.filter((goods) => Number(goodsId) === goods.goodsId);
Without array destructuring:
=> print with array
With array destructuring:
=> print without array (only the value=object)
goods/cart
였고, 그 위에서 선언된 상품 상세 조회의 url이 goods/:goodsId
였기 때문에 cart
를 id라고 인식하고 cart
라는 id는 없기 때문에 빈 오브젝트를 보내준 것이었다.모던 자바스크립트 구조 분해 할당 섹션에서 아주 자세하게 다양한 예시들과 설명이 되어 있어서 읽어보며 더 깊이 있게 이해해 보았다.
코드도 수정해보고 연관되어 있는 다른 파일들에서 내가 놓친 syntax 오류나 typo가 있었는지 계속 봤는데 해결이 되지 않아 기술 매니저님을 찾아갔고, 매니저님이 바로 찾아주셨다.....
미들웨어는 순서가 중요하다