강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

Slack 클론 코딩[백엔드 with NestJS + TypeORM]

typeorm 쿼리빌더

createQueryBuilder

작성

·

494

0

아직 TypeORM 가 조금 헤깔려서 질문 남깁니다. ㅠ 

board.id = comments.boardId 을 join 걸어야하는데, 

erd 가 이렇게 구성되어있구요 .

Board entity 

Comments entity 

이렇게 구성되어져있습니다 ! 

boardId 를 가지고 board 의 작성 내용과 그밑에 comments 들을 들고올려고 하는데요 .

어떻게 작성 할수있을까요?? ^^ ; ㅎ 

답변 2

0

1 https://typeorm.io/#/select-query-builder

위의 사이트에서 해당하는 글을 읽어봤는데여 .

3번째 인수에 조건을  거는것과 , where 문의 차이엔 어떤 차이가 있을까영 ?

2. 인자값에 타입지정은 자주 하셨지만 return 타입엔 비교적 타입추론을 자주 하셨더라구요 . ㅎ 특별한 이유가 있을까요 ? ㅎ 

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

1. 3번째 인수에 조건을 거는 것은 이미 join한 후에 다시 조건을 걸어 필터링하는 것이라고 보시면 됩니다. 그래서 board에 comment를 조인한 후 boardId로 필터링하는 게 의미가 없습니다. comment의 boardid는 전부다 같은 boardId거든요.

2. service 인자는 타입추론이 아예 안 됩니다. return은 타입추론이 됩니다.

친절한 답변 감사합니다 :) 

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

데이터까지 가져오려면 innerJoinAndSelect를 쓰셔야 합니다.

innerJoinAndSelect('board.BoardToComments', 'commentsOfBoard')

3번째 인수는 조건인데 현재 상황에서 필터링하는 게 없으므로 따로 조건을 넣을 필요는 없습니다.

아아 해당하는 만약 board 에 대한 comments 들과 board 데이터를 가져와야한다하면

그 해당하는 board 를 알기위해 3번째 인수에 조건을 걸어줘야하죠?

1. 제로초님이 네이밍 구성을 길게하라고해서 길게 적을려고 하는데 저기서 네이밍이라던지 좀더 수정해야될게 뭐가있을까요 ?

2. async 에서 return 타입은 무엇으로 하시나여 ???

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

아뇨. boardId 조건은 where에 적는 겁니다. commentsOfBoard의 BoardId는 전부 해당 board의 아이디라서 의미가 없습니다.

저라면 BoardToComments 대신에 그냥 Comments 했을 것 같습니다(Entity쪽 수정) 그래야 board.Comments로 자연스럽습니다.

commentsOfBoard도 그냥 comments만 쓰고요. 읽을 때 중복없이 자연스러운게 좋습니다.

return 타입은 알아서 추론돼서 직접 적으실 필요 없습니다(getManyAndCount의 리턴타입).

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기