커스텀 데코레이터
// serialize.interceptor.ts
import { UseInterceptors, NestInterceptor, ExecutionContext, CallHandler } from "@nestjs/common";
import { Observable } from "rxjs";
import { map } from 'rxjs/operators';
import { plainToClass } from "class-transformer";
import { UserDto } from "src/users/dtos/user.dto";
export function Serialize(dto : any) {
return UseInterceptors(new SerializeInterceptor(dto))
}
export class SerializeInterceptor implements NestInterceptor {
constructor (private dto : any) {}
intercept(context : ExecutionContext, handler : CallHandler) : Observable<any> {
return handler.handle().pipe(
map((data : any) => {
return plainToClass(UserDto, data, {
excludeExtraneousValues : true
})
})
)
}
}
전체 컨트롤러에 Interceptor 데코레이터 적용
Last updated