개발/TypeORM
[TypeORM] QueryFailedError: column "relation_Id" does not exist
8시20분
2021. 11. 25. 08:20
아래와 같이 creaeteQueryBuillder를 통해 Join 테이블에서 'storyId' 칼럼의 값만을 가져오는 쿼리를 구성하는데 QueryFailedError: column "storyId" does not exist와 같이 QueryFailed가 발생하였는데 typeorm 깃헙에도 이슈로 남아있다.
const likeList = await this.connection
.createQueryBuilder(Like, 'like')
.where('like.userId = :userId', { userId: user.id })
.select(['storyId']);
const filter = await this.repository
.createQueryBuilder('story')
.where('story.id IN(' + likeList.getQuery() + ')')
.setParameters(likeList.getParameters());
filter.skip((page - 1) * limit).take(Math.min(limit, 1000));
const [items, total] = await filter.getManyAndCount();
두 개로 나눠서 서브쿼리를 통해 값을 불러오지 않고, 아래와 같이 .leftJoin()을 통해 하나의 쿼리로 불러오는 것을 통해 해결하였다.
const [items, total] = await this.repository
.createQueryBuilder('story')
.leftJoin('story.likes', 'like', 'like.storyId = story.id')
.where('like.userId = :userId', { userId: user.id })
.skip((page - 1) * limit)
.take(Math.min(limit, 1000))
.getManyAndCount();