
아래 코드는 유저(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 } });
}