NestJS+TypeORM 연관관계가 아닌 테이블 queryBuilder로 조인하기

wonjun.Aden·2023년 7월 27일
0

TypeORM

목록 보기
2/3
post-thumbnail

열심히 개발을 하던 중 연관관계가 아닌 테이블을 join해야 하는 상황이 발생하였다.
처음 마주하는 케이스였다.

하지만 stackOverFlow에는 모든 정보가 다 있다.
https://github.com/typeorm/typeorm/issues/951#issuecomment-332787865

위 댓글을 바로 참고해보았다.

연관관계가 아닌 테이블을 Join할 때 leftJoinAndMapOne이라는 함수를 사용해서 Join을 걸어주는 것이었다.

const query = await this.createQueryBuilder('A')
      .leftJoinAndMapOne(
        'A.B',
        B,
        'B',
        'A.idx = B.idx AND A.id = B.id',
      )
      .where('A.id = :id', { id });

나는 이런식으로 사용했다.
A라는 지금 사용중인 Repository에 alias를 주고 A에 B라는 연관관계를 만들기 위해 A.B라는 alias를 넣어준다. 그리고 B라는 엔티티를 넣고 mapping을 시켜주면 leftJoin이 된다.

innerJoin도 똑같이 해주면 된다.

queryBuilder는 아직 못하는게 없는 것 같다.

그리고 leftJoinAndMapOne을 사용하면서 take, skip과 limit,offset에 대한 에러가 발생했었는데 그건 다음 포스트에서 다루도록 하겠다.

끝!

profile
아프리카의 BackEnd Developer 장원준입니다.

0개의 댓글