@Query와 TypeORM으로 GET method API Pagination 하기

개발/NestJS 2021. 9. 30. 08:20

GET 메소드를 활용하는 Restful 방식의 API를 구성할 때, 해당 테이블 내의 모든 정보를 가져오는 findAll( ) 방식의 API는 테이블에 데이터가 많아질 경우, 성능 이슈와 서버 메모리 사용량 증가로 인한 비용 이슈가 발생할 수 있다. Page 단위로 데이터를 분할하여 전달하는 방식으로 TypeORM의 createQueryBuilder( )를 활용하여 구성하였다. // user.service.ts async findCollectors(page, limit) { return await this.repository .createQueryBuilder('user') // user 테이블로 전달할 쿼리문임을 정의합니다. .where('user.role = COLLECTOR') // user 테이블..

ElasticSearch 사용하지 않고 Search API 작성

개발/NestJS 2021. 9. 10. 08:20

ElasticSearch를 사용하지 않고, 단어 기반의 통합 검색 기능을 추가해야하는 일이 생겼다. 통합검색 API를 구축할 때, 맨처음에는 다음과 같이 @Body 를 사용하여 body안에 {word: 단어}를 포함시켜 API를 호출하는 방식으로 설계하였다. // @Body를 사용하였을 때 @Get('') search(@Body(){word: string}){ return this.service.search(word); } 위의 코드처럼 작성하고 테스트 했을 때, word를 undefined로 호출시 백엔드로 전달이 되지않는 이슈가 있었다. 구글은 어떤 방식으로 하는지 궁금해서 구글에 검색을 해보고 url을 중점적으로 확인하였다. 구글의 검색 URL을 보고 @Query를 사용하여 API의 url뒤에 ?를..

Article Thumbnail