카테고리 없음

회원가입 기능 서버에서 유효성 검사후 에러 클라이언트로 보내기

노엠디엔 2023. 7. 10. 18:23

next 강의를 듣던 도중에 강사님의 기가 막힌 에러메시지를 클라이언트로 보내는 코드를 보고 파헤쳐보았다.

 

 

중요한 부분은 mapError 함수와 42번째 줄, 43번째 줄이다.

42 번째 줄의 validate  class-validator 라이브러리에서 제공하는 함수로, 객체의 유효성을 검사한다. 

validate 함수는 검사하려는 객체를 인수로 받고, 검사 결과로 Promise를 반환, Promise는 유효성 검사가 완료된 후 검사 결과를 포함하게 된다고 함. user 객체를 인수로 받아 유효성 검사를 수행하며. user 객체는 User 엔티티(모델)의 인스턴스로, email, username, password 등의 속성을 가지고 있고 

검사 결과로 나오는 errors 변수에는 유효성 검사에서 발생한 오류들의 배열이 담겨 있다.
이 error는 메세지들이 들어 있는데 이런 형태다

vaildate가 준 에러 메세지

그래서 이 에러의 길이가 0보다 크다면 (에러 메세지가 있다면)
이 mapErrors 함수에 걸러져 메세지들을 클라이언트로 보내준다.

이 코드에서

Object.entries의 기능은 다음과 같고

prev 배열의 [err.property]는 즉 email, username, password 가 된다

아런식으로 메시지를 빼낼 수 있다. 그렇게 reduce 문을 통해 prev [err.property]  값에 담겨 클라이언트로 보내진다.