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

+ Recent posts