본문 바로가기
Error 관리

Error: WHERE parameter "userId" has invalid "undefined" value 에러

by invelog 2023. 2. 13.
반응형

특정 기능 CRUD 중 기존 등록한 데이터를 Get 방식으로 가져오는 부분을 구현했는데, 

제목과 같은 에러가 발생했다. 

이해를 하지 못하겠는건 무조건 안되는 건 아니고 간혹 데이터가 정상적으로 들어올 때가 있다. 

직역해서 유추해보면 userId 값이 없을 때(undefined으로 떨어질 때)  서비스를 호출해서 발생하는 문제 같은데 디버깅을 해봐도 서비스를 호출할 때 userId 값이 없이 들어오는 경우가 없는데 미칠 노릇이다. 

 

하나 이상한 점을 발견한 것은 해당 에러와 관련이 있는 문제인지 모르겠지만 

Get 방식으로 호출했을때 주소줄 마지막에 붙은 파라미터 값이 2개를 줬는데, 하나 값은 인코딩이 된 읽을 수 없는 값으로 들어가 있고 다른 하나 값은 할당한 파라미터값 그대로 들어가 있다. 

위에서 문제가 된 userId 값이 인코딩 없이 할당한 파라미터값 그대로 들어가 있는 부분이다. 

 

왠지 또 몇일은 이 에러에서 헤메일 것 같은 불길한 예감이 든다.

 


 

드디어 원인을 찾고 해결했다.

엄한 곳에서 원인을 추측하고 있어서 생각보다 시간을 오래 끌었다. 

처음엔 useState로 화면 로딩할 때 값을 담아놓고 user 정보가 있으면 바로 API 호출하는 식으로 했는데 그 과정에서 값이 안담겨 있어서가 아닐까라고 생각하고 여러 상황에서 확인해 봤지만 무조건 값은 있었다. 

 

그러다 Node.js에서 디버깅 환경 설정하는 일을 미뤄오다 이참에 안되겠다 싶어서 환경 설정하고 디버깅 찍어보니!

 

미쳤다... Request의 Body에서 없는 값을 찾고 있으니 계속 undefined가 뜬 것이었다 .

추측컨데, Post 방식으로 API에 파라미터를 보내면 body에 담겨저 있고, Get 방식으로 보낼땐 query에 담겨져 있는 것으로 로 보인다. Get 방식일땐 query string으로 보낼테니 그게 맞겠지.

 

왜 무심결에 그냥 다 body에서 받을거라 생각하고 엄한 곳에서 헤매고 있었는지...😂

 

이번 오류도 허무하게 해결

반응형