클라이언트가 페이징 처리를 할 때 백엔드는 분명히 페이징 처리를 해야될 때가 온다.
그리고 orm을 typeorm 쓰고 있는 개발자라면 take를 쓸 것인지 limit을 쓸 것인지 고민해야될 때가 온다.
친절하게도 typeorm에서 처리하는 방법을 제시하고 있다.
typeorm을 보면 limit에서는 join을 할 경우 원하는 결과값이 나오지 않을 수 있다고 나와있다.
이유가 뭘까..?
https://stackoverflow.com/questions/68468192/difference-between-limit-and-take-in-typeorm
stackoverflow에서 찾아볼 수 있었다.
내가 이해한 바로는
limit은 select 당시에 limit을 먼저 실행한 후 join을 실행하기 때문에 원하는 값이 나오지 않는다는 것이다.
반면에 take은 먼저 join까지 적용하여 모든 select를 한 후에 mapping하여 페이징 처리를 한다는 것이 다른 점이였다.
join이 없으면 limit을 사용하는 것이 효율적이지만 join이 있는 경우에는 take를 사용하자~
typeorm is trash...