팀프로젝트로 배달 서비스를 만드는 과정에서 발생한 오류 하나를 정리하려 한다.
문제 상황
존재하지 않는 메뉴 조회시 NOT FOUND 오류를 발생시키는 코드를 추가하였다.
prisma의 findUnique를 통해 존재하지 않는 값을 조회할 경우, null 값이 반환되어야 한다고 생각하고, 따로 추가적인 처리 없이 그대로 반환하도록 설정해주었다. 그러나 TypeError가 뜨며, null 값이 반환되어서 menu를 찾을 수 없다고 오류가떴다.
문제 찾기
처음에는 null 값이 떠서 menu를 찾을 수 없는 것이 당연하고 그것을 의도했는데, 이것이 오류가 뜬다는 것이 이해가 가지 않았다. 하지만 한참을 고민하다 null이 뜨는 menu가 내가 의도한 null이 아닐 수 있다고 생각하고 하나씩 찾아보기 시작했다.
구현한 식당의 메뉴 목록을 조회하는 repository 부분을 살펴보던 중 prisma로 조회한 menu를 반환하기 전 필요한 항목만 반환하기 위해menu.menuId와 같은 속성에 접근하는 코드가 눈에 들어왔다. 생각해보니 데이터가 null인 경우 menu.menuId와 같은 속성에 접근할 수 없어 TypeError가 발생하는 것이었다.
해결 방법
menu가 존재하지 않는다면, 굳이 필요한 값을 반환하기 위한 코드로 넘어가기 전에 null 값을 반환해주면 된다. 그래서 메뉴가 존재 하지 않을 경우, 필드를 추출하는 코드에 접근 전 null 값을 반환하도록 예외처리 코드를 작성해주었다. 그러자 없는 메뉴를 조회시 유도한대로 NOT FOUND 오류가 발생했다.
대단히 어렵거나 복잡한 문제는 아니었으나, 최근 3-architecture을 공부하며 실제로 요청과 응답, 데이터의 흐름이 이해가 가기 시작했다. 예전같아서는 터미널에 뜬 오류를 이해하지 못해 무조건 검색창 앞으로 가기 바빴는데, 이제는 터미널에 뜬 오류를 읽고 코드의 흐름을 체크하며, console.log()을 통해 해결해나가기 시작했다. 예전에는 오류가 뜨면 눈앞이 캄캄해지는것이 먼저였는데, 이제는 하나씩 문제를 재미를 찾기 시작한 것 같다. 이 단계에서 처음으로 온전히 내 힘으로 해결한 오류였기에 기록을 남기고 싶었다. 앞으로 더 많은 오류들을 스스로 해결해나가며 빠르게 성장하고 싶다.
'개발 기초 다지기' 카테고리의 다른 글
npm 글로벌 설치 오류 (0) | 2024.06.24 |
---|---|
Prisma의 connect 기능 (0) | 2024.06.21 |
배달 메뉴 목록 정렬 기능 구현(같은 카테고리에서 낮은 가격 순으로) (0) | 2024.06.20 |
장바구니기능의 ERD와 API 명세서 (0) | 2024.06.18 |
배포 후 수정 하기 (git hub과 pm2) (0) | 2024.06.17 |
댓글