-
[typescript]class-validator 에러 처리언어/Javascript 2023. 9. 1. 21:00
NestJS에서 DTO 처리할 때 class-validator와 같은 라이브러리를 사용하여 데코레이터를 사용하면 유효성 검사가 가능합니다. 유효성 검사를 통과하지 못한 경우, 에러 처리를 어디서 어떻게 해야 할지에 대한 접근 방법은 다양합니다.
일반적으로 유효성 검사에 실패한 경우에는 예외를 throw하여 에러 처리를 하는 것이 일반적입니다. NestJS에서는 이를 위해 HttpException을 사용하거나 직접 예외를 생성하여 처리할 수 있습니다. 에러 처리는 주로 컨트롤러나 미들웨어에서 수행됩니다.
import { Controller, Post, Body, HttpException, HttpStatus } from '@nestjs/common'; import { CreatePostDto } from './create-post.dto'; import { validate } from 'class-validator'; import { ValidationError } from 'class-validator'; @Controller('posts') export class PostsController { @Post() async createPost(@Body() createPostDto: CreatePostDto) { try { // 유효성 검사 실행 const errors: ValidationError[] = await validate(createPostDto); if (errors.length > 0) { throw new HttpException({ message: '입력 데이터가 유효하지 않습니다.', errors }, HttpStatus.BAD_REQUEST); } // 이후 로직 수행 // ... } catch (e) { // 에러 처리 console.error(e); throw new HttpException('서버 오류', HttpStatus.INTERNAL_SERVER_ERROR); } } }
나 같은 경우 errors의 타입을 명확히해주지 않으니 에러가 났었다. 비동기로 처리하는것이라 async 처리도 필수였다.
이렇게 에러처리 하지 않으면 DB단에서 에러가 발생하는데 로그에는 에러가 찍히지 않았다.
반응형'언어 > Javascript' 카테고리의 다른 글
npm build / npm run / npm start / npm eject 차이 (0) 2023.09.08 npm build / npm run / npm start / npm eject 차이 (0) 2023.09.05 POST : Cannot read properties of undefined (reading 'length') (0) 2023.08.30 update하면서 마주했던 에러 몇 가지 (0) 2023.08.24 [NodeJS] Error [ERR_REQUIRE_ESM]: require() of ES Module ~ from ~ not supported. 에러 (0) 2023.08.23