Notice
Recent Posts
Recent Comments
Link
«   2025/11   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
Tags
more
Archives
Today
Total
관리 메뉴

Mini

[Nest JS] 유저-게시글의 관계 형성, 게시글 생성시 유저정보 추가 본문

JS/Nest.js

[Nest JS] 유저-게시글의 관계 형성, 게시글 생성시 유저정보 추가

Mini_96 2024. 8. 19. 00:18

 

* 각각의 클래스에 각자의 변수를 넣어야함.

@Entity()
@Unique(['username'])
export class User extends BaseEntity{
...
  
  //상대의타입, 상대방에서 나를 부르는 별칭, this(user)를 가져올때 상대방(board)도 가져오도록
  @OneToMany(type => Board, board => board.user, {eager: true})
  boards: Board[]
@Entity()
export class Board extends BaseEntity{
  ...

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

 

* 게시글 생성시 유저 정보 넣기

* 컨트롤러

여기서 이전에 만든 @GetUser를 이용 => user 정보얻어와서 매개변수로 전달.

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

연관된 서비스에 매개변수 추가

createBoard(createBoardDto : CreateBoardDto, user: User): Promise<Board>{
    return this.boardRepository.createBoard(createBoardDto, user);
}

리포지토리에서 db에 넣을때, user정보도 넣기.

async createBoard(createBoardDto : CreateBoardDto, user: User): Promise<Board>{
  const {title,description} = createBoardDto;

  //db생성시 .create 이용해야
  const board = this.create({
    // id : uuid(),  //자동으로 유니크한 값을 넣어줌
    title : title,
    description : description,
    status : BoardStatus.PUBLIC,
    user
  })

 

결과
db에는 userid가 저장되있음