Nest.js 권한 처리

김민석·2026년 3월 17일

유저와 게시물의 관계 형성

아래 코드는 유저(User)와 게시물(Board) 사이의 관계를 설정한 것이다.
하나의 유저는 여러 개의 게시물을 작성할 수 있기 때문에 1:N 관계를 형성한다.

@OneToMany 는 하나의 엔티티가 여러 개의 엔티티를 가질 수 있을 때 사용한다.
첫 번째 파라미터의 Type => BoardEntity 는 어떤 엔티티와 관계를 맺는지 지정하며
두 번째 파라미터 boards => boards.user 는 BoardEntity 내부에서 User를 참조하는 필드를 의미한다. 마지막 eger가 true면 user를 불러올 때 boards를 같이 가져옴 false면 안가져온다.

유저 엔티티

  @OneToMany(Type => BoardEntity, boards => boards.user, { eager: true })
  boards: BoardEntity[]

게시물 엔티티

@ManyToOne(Type => UserEntity, user => user.boards, { eager: false })
  user: UserEntity;

게시물 생성 시 유저정보 넣어주기

@Post()
  @UsePipes(ValidationPipe)
  createBoard(@Body() createBoardDto: CreateBoardDto, @GetUser() user: UserEntity): Promise<BoardEntity> {
    return this.boardsService.createBoard(createBoardDto, user);
  }

@GetUser 를 통해 user를 불러와 createBoard 사용시 user도 같이 넣어주면 됨

해당 유저 게시물만 가져오기

이번에도 GetUser를 통해 user를 불러와 넘겨주어 서비스 로직에서 boardReository에서 user가 같은 게시물만 가져오면 된다.

@Get("/user")
  getAllBoardsByUser(@GetUser() user: UserEntity): Promise<BoardEntity[]> {
    return this.boardsService.getAllBoardsByUser(user);
  }
async getAllBoardsByUser(user: UserEntity): Promise<BoardEntity[]> {
    return this.boardsRepository.find({ where: { user } });
  }

로그

profile
나만의 기록장

0개의 댓글