[TIL] Express Server 연습, 구조 분해 할당

김시원·2023년 4월 15일
0

TIL

목록 보기
4/50

What I Did Today

  1. Express 개념 강의 + 노트 정리

  2. MongoDB 개념 강의 + 노트 정리

  3. Express + MongoDB 실습

TIL

Issues encountered

  1. req.params로 받은 값과 res.json({})으로 전달할 값을 구조 분해 할당으로 처리하는 부분 이해하기.
    ES6 구조 분해 할당 문법을 자바스크립트 알고리즘 문제를 풀면서 여러 개의 변수 초기화 한 줄로 작성하기, 두 값 swap하기 정도로만 사용해보았는데, 실전 강의를 들으면서 JSON이나 array로된 object typed 데이터들을 처리할 때 유용하게 쓰인다는 걸 알게되어서 다시 정리해보았다.

  2. 강의 quiz 부분에서 카트에 들어 있는 상품을 조회하는 GET 요청 API를 goods.js 파일로 옮기는 문제가 있었다. 그러나, 옮기고 난 뒤 GET 요청에서 {} 비어있는 object만이 반환되었다. 옮기는 과정에서 goods/cart로 url을 변경해주는 작업만 했는데 변경시킨 이후로 해당 미들웨어 안에서 console.log()도 찍히지가 않았었다.

What I tried

 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)

  1. 미들웨어는 순서가 중요했다.... 옮긴 GET 미들웨어의 url이 goods/cart였고, 그 위에서 선언된 상품 상세 조회의 url이 goods/:goodsId였기 때문에 cart를 id라고 인식하고 cart라는 id는 없기 때문에 빈 오브젝트를 보내준 것이었다.

How I resolved the issues

  1. 모던 자바스크립트 구조 분해 할당 섹션에서 아주 자세하게 다양한 예시들과 설명이 되어 있어서 읽어보며 더 깊이 있게 이해해 보았다.

  2. 코드도 수정해보고 연관되어 있는 다른 파일들에서 내가 놓친 syntax 오류나 typo가 있었는지 계속 봤는데 해결이 되지 않아 기술 매니저님을 찾아갔고, 매니저님이 바로 찾아주셨다.....

What I newly learned

미들웨어는 순서가 중요하다

0개의 댓글