티스토리 뷰
오늘 느낀 try-catch의 중요성에 대해 남겨보고자 한다.
user스키마를 만들면서 email과 username에 unique:true를 설정해줬다.
누군가 이메일이나 유저네임을 중복으로 사용하려 하거나 남의 정보를 도용한다면 userSchema가 미리 알아내서 가입이 안되도록 할 것이다. 나의 백엔드가 뭔가 이상하다는 것을 미리 알고 걸러준다는 뜻이다.
하지만 브라우저는? 브라우저는 아직 그런거 모른다. 그냥 post를 보낼 뿐이고 백엔드에서 받지 않으니 에러가 날것이다.
브라우저에게 만약 누군가 중복된 이메일을 쓰려고 한다면 에러내지 말고 내가 원하는 페이지를 랜더링해달라고 말하거나, redirect 시키기 위해 controller에게 전달해야 한다.
password의 confirm이 안 맞거나, 혹시라도 username이나 email이 User db에 이미 존재하는 경우, join view를 다시 랜더링하자.
그럼 에러가 생겨도 자연스럽게? join으로 다시 랜더링 될 것이다.
그럼 끝일까? 하지만 정말 상상도 못 한 행동을 하는 유저가 항상 있고, 그런 만일의 사태에도 '페이지가 작동하지 않습니다'같은
그날 입은 팬티 색깔 들키는 것 같은 창피한 모습은 피해야 한다.
처음에 try-catch에 대해 배웠을 땐 그렇게 중요한 기능이라고 생각하지 않았는데, 만일 뭔가 일이 잘못되는 상황이 오더라도 팬티색깔만은 지킬 수 있는 그런 기능이라고 볼 수 있다.
이메일이 겹치거나, username이 겹치거나, 비밀번호 확인이 틀린 상황 외에 상상도 못 한 에러가 있더라도 그게 뭔지 지금은 모르겠지만 혹여나 그런 상황이 오면 400번 status코드를 보내고 join을 랜더링하고 errorMessage를 보내는 기능이다.
지금은 모르겠지만 나중에 에러가 발생하면 에러메세지를 참고해서 코드를 수정하면 더 안정적인 서비스가 될 것이다.
'nodeJS' 카테고리의 다른 글
user data update, 사용자 정보 업데이트 하기 (0) | 2022.02.14 |
---|---|
로그인 (user authentication) 기능 만들기 (0) | 2022.02.13 |
DB와 nodeJS가 어울리기 위해 필요한 것, async (0) | 2022.02.09 |
받은 데이터를 DB에 저장해보자(mongoDB, mongoose) (0) | 2022.02.09 |
get 과 post, 데이터를 백엔드로 가져오는 방법 (0) | 2022.02.09 |