포스트

NestJS에서 Class-validator가 형변환된 객체에 대한 검증 오류를 던지지 않는 이유

문제 상황

질문에서는 NestJS 프레임워크에서 class-validator를 사용하면서 발생하는 문제에 대해 언급하고 있습니다. 특히, 원시 타입(string, number 등)이 클래스 객체로 형변환(cast)되었을 때, class-validator가 제대로 동작하지 않는 상황을 지적하고 있습니다.

원인과 해결 방법

원인: 형변환과 검증 메커니즘

먼저, class-validator는 TypeScript 또는 JavaScript 클래스에 정의된 속성에 대해 검증을 수행합니다. 그러나 형변환을 거친 객체는 검증 과정에서 원래의 유형을 잃어버리게 됩니다. 이 때문에 class-validator는 형변환된 객체에 대해 제대로 동작하지 않습니다.

해결 방법: 명시적 형 선언과 유효성 검사

이 문제를 해결하기 위한 가장 간단한 방법은 객체를 생성할 때 명시적으로 클래스 형을 선언하는 것입니다. 다음은 코드 예시입니다:

1
2
3
const myObject = new MyClass({
  ...yourRawObject
});

이렇게 하면 MyClass에 정의된 검증 규칙이 적용되어, 문제가 해결될 것입니다.

기타 고려 사항

데이터 바인딩(Data Binding)

데이터 바인딩은 프론트엔드에서 백엔드로 데이터를 전송할 때 자주 사용되는 기술입니다. NestJS에서는 이를 쉽게 구현할 수 있으나, 형변환 문제가 발생할 가능성이 있으므로 주의가 필요합니다.

Error 이름: ValidationError

class-validator에서 유효성 검사 실패 시 발생하는 오류의 이름은 ValidationError입니다. 이 오류는 검증이 실패한 필드와 실패 이유를 담고 있으므로, 디버깅에 유용합니다.

결론

NestJS와 class-validator를 사용하면서 형변환된 객체에 대한 검증 문제가 발생한다면, 객체 생성 시 명시적으로 클래스 형을 선언하여 해결할 수 있습니다. 이 방법을 통해 유효성 검사가 정확히 이루어질 것입니다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.