728x90
fastcampus 강의
// user-id.decorator.ts
export const UserId = createParamDecorator(
(data: unknown, context: ExecutionContext) => {
const request = context.switchToHttp().getRequest();
if (!request || !request.user || !request.user.sub)
throw new UnauthorizedException('사용자 정보를 찾을 수 없습니다!');
return request.user.sub;
},
);
user.sub 있는지 체크 후 반환
@Post()
@RBAC(Role.admin)
@UseInterceptors(TransactionInterceptor)
postMovie(
@Body() body: CreateMovieDto, //
@Req() req,
@UserId() userId: number,
) {
return this.movieService.create(body, userId, req.queryRunner);
}
-
// query-runner.decorator.ts
export const QueryRunnerDeco = createParamDecorator(
(data: any, context: ExecutionContext) => {
const request = context.switchToHttp().getRequest();
if (!request || !request.queryRunner)
throw new InternalServerErrorException(
'Query Runner 객체를 찾을 수 없습니다!',
);
return request.queryRunner;
},
);
쿼리 러너 들어있느지 체크 후 반환
@Post()
@RBAC(Role.admin)
@UseInterceptors(TransactionInterceptor)
postMovie(
@Body() body: CreateMovieDto, //
@QueryRunnerDeco() queryRunner: QueryRunner,
@UserId() userId: number,
) {
return this.movieService.create(body, userId, queryRunner);
}
https://fastcampus.co.kr/classroom/239666
커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스
성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.
fastcampus.co.kr
728x90
'코딩 > Nest.js' 카테고리의 다른 글
Caching (2) | 2024.10.25 |
---|---|
Multer (0) | 2024.10.25 |
Exception Filter (1) | 2024.10.23 |
Interceptor (1) | 2024.10.23 |
Pagination (0) | 2024.10.23 |