[Dimelo Project] take, skip 버그수정 (TypeOrm querybuilder)

Suyeon Pi·2022년 2월 24일
1

Dimelo

목록 보기
11/22
post-custom-banner

페이지네이션을 구현하기 위해 take, skip을 사용했었다.

https://typeorm.biunav.com/en/select-query-builder.html#adding-group-by-expression

복잡한 쿼리 구문에는 limit과 offset이 잘 작동하지 않는다는 typeOrm문서를 보고 take과 skip을 사용했다.
하지만 나는 typeorm querybuilder에서 getRawMany()로 raw data를 반환하기 때문에 skip과 take가 제대로 작동하지 않았다.

https://stackoverflow.com/questions/57819937/typeorm-select-all-rows-but-limit-25

stackoverflow를 찾아본 결과 raw데이터를 반환할 때는 다시 limit과 offset를 사용해야 한대서 바꿔 보니 정상적으로 작동했다.

코드 변경 전 :

   return query
      .take(perPage)
      .skip(perPage * (page - 1))
      .orderBy(`${sort === 'avg' ? 'course_avg' : 'num_review'}`, 'DESC')
      .getRawMany();

코드 변경 후:

    return query
      .orderBy(`${sort === 'avg' ? 'course_avg' : 'num_review'}`, 'DESC')
      .limit(perPage)
      .offset(perPage * (page - 1))
      .getRawMany();
profile
Stay hungry, Stay foolish!
post-custom-banner

0개의 댓글