request dto의 메서드 동작 오류

Lee·2023년 2월 20일
0

발생한 문제

requestDto의 entity 변환로직인 toEntity() 메서드가 인식되지 않는 문제 발생

// request dto
public toEntity(): User {
    return User.createSignUpUser(
      this._email,
      this._userName,
      this._password,
      this._checkPassword,
    );
  }

에러 메세지: TypeError: params.toEntity is not a function

문제 원인

에러 메세지에 따르면 DTO의 엔티티 변환 함수인 toEntity()를 인식하지 않는 것을 확인하기 위해 요청 객체의 파라미터를 확인해 본 결과 사용자가 입력한 값만 포함되어 있기 때문에 변환 로직이 없다고 판단

{
 email: akak@gmail.com,
 userName: galaxian,
 password: password,
 password: password
}

문제 해결

//main.ts
app.useGlobalPipes(new ValidationPipe({ whitelist: true, transform: true }));

ValidationPipe 옵션의 transform을 true로 설정하게 되면
validation이 끝난 자바스클립트 요청 객체를 개발자가 정의한 DTO 클래스로 자동 변환을 시켜주는 역할을 한다.
따라서 dto가 역직렬화 되어 toEntity 메서드가 정상적으로 동작하게된다.

profile
발전하고 싶은 백엔드 개발자

0개의 댓글