강의 내용에 따라서 진행을 하던 도중에 문제가 생겼다. 똑같이 따라했는데 왜 난 실행이 안될까 하면서 하나하나 다 비교해보고 찾아보는데 변수명이나 다른 부분이 하나도 없었다. 그래서 여러 방법들을 시도했다.
- 조회 기능이 안되니까 그 부분을 try catch로 확인해보자 그래도 똑같이 에러가 발생했다.
- 그러면 어디서 문제가 생길까 이어지는 부분을 찾아보자 했을 때 장바구니 조회에는 상품에 이미지를 저장하지 않는데 강의에서 잘 실행된 결과에서는 이미지를 가져온다 "그 이미지를 어디서 가져올까" 해서 이미지가 들어간 상품 목록과 상세 조회 부분을 마찬가지로 try catch로 확인해보니 상세 조회 부분이 문제였다.
- 어딘지 찾았으니 다 콘솔을 찍어본다. 그래서 원인을 알아냈다.
router.get("/goods/:goodsId" ...
router.get("/goods/cart" ... 4.
- 두 주소가 겹쳐서 발생한 문제였고 goodsId값으로 cart가 들어가 문제가 생겼다.
- 그래서 우연히 순서를 바꾸니까 해결이 되긴 했다. 라우터도 미들웨어로 순서가 중요한 것이었다.
- 그러면 왜 goodsId에선 "에러처리 한 부분이 아닌 그 전에 에러가 나올까" 하는 문제가 생겼다
- 다시 또 찾아본다. 기술매니저님이 지나가는 말로 힌트를 주고 가셨다. "find()에서 숫자형으로 자동 변환이 될 거다".
여기서 find는 Array.find()로 사용하는 배열의 메서드가 아니라 model.find()로 다른 것이었다. - 그래서 저 find에 cart가 들어가면 숫자형으로 변환이 안되니까 발생한 에러였다.
그렇게 오늘 라우터 순서의 중요성과 find에서 자동 형변환이 된다는 것 그리고 만약 정해진 변환이 안되면 에러가 발생할 수도 있다는 것을 알게되었다. 처음엔 무조건 숫자형으로 바뀐다고 생각했는데 또 다른데에서 사용한 경우는 문자열로 찾아야하는 경우가 있어서 아마 스키마에 설정된 값으로 찾는 것으로 예상이 된다. 어디서 발생한 에러인지 알았으니 다음에 이런 문제에 대해서 보다 쉽게 찾아내 해결할 수 있을 것 같다.
'오늘 뭐했냐 > 끄적끄적' 카테고리의 다른 글
23.07.02 LV2 API 테스트 (0) | 2023.07.02 |
---|---|
23.07.01 LV2 과제 중 (1) | 2023.07.01 |
23. 06.27 LV1 과제 완료 (0) | 2023.06.27 |
23. 06.26 입문주차 과제 중 (0) | 2023.06.26 |
23. 6.23 봤냐? 그럼 다시 보고 생각해라 (주특기 1일차) (0) | 2023.06.24 |