아래와 같이 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();
[TypeORM] QueryFailedError: column "relation_Id" does not exist
아래와 같이 creaeteQueryBuillder를 통해 Join 테이블에서 'storyId' 칼럼의 값만을 가져오는 쿼리를 구성하는데 QueryFailedError: column "storyId" does not exist와 같이 QueryFailed가 발생하였는데 typeorm 깃헙에도 이슈로 남아있다.
두 개로 나눠서 서브쿼리를 통해 값을 불러오지 않고, 아래와 같이 .leftJoin()을 통해 하나의 쿼리로 불러오는 것을 통해 해결하였다.
'개발 > TypeORM' 카테고리의 다른 글