개발 공부/NestJS

Serialize 직렬화

게으른 제이 2023. 3. 23. 19:48

회원가입 API를 통해 클라이언트에게 응답을 보내줘야 할 때, 엔티티의 패스워드 속성은 숨기고 싶을 때가 있습니다.

 

우선 class-validator와 class-transformer를 설치합니다. 저는 pnpm을 사용한 프로젝트이므로 pnpm으로 설치합니다.

 

$ pnpm i --save class-validator class-transformer

 

응답시 숨기고 싶은 엔티티의 속성에 @Exclude 데코레이터를 삽입합니다.

 

import { Exclude } from 'class-transformer';

@Entity()
export class User extends BaseEntity {
  
  ...

  @Column({ nullable: false })
  @Exclude()
  password: string;
  
  ...
}

 

응답시에 속성을 숨기고 싶은 컨트롤러또는 핸들러에서 @UseInterceptor 데코레이터로 사용합니다.

 

import { ClassSerializerInterceptor, Controller, UseInterceptors } from '@nestjs/common';

@Controller('auth')
@UseInterceptors(ClassSerializerInterceptor)
export class AuthController {
	...
}