cleanUrl: /TypeORM을-이용한-쿼리-빌더
floatFirstTOC: right
자동차 견적을 정확하게 뽑는 건 쉽지 않지만, 데이터를 기준으로 대략적인 시세를 추정하는 건 가능하다. 이제 사용자가 보낸 조건에 따라 유사한 자동차를 필터링하고 평균값을 계산해 견적을 산출하는 시스템을 설계해보자.
이 과정의 핵심은 정확한 시세 추정보다는, TypeORM을 통해 복합적인 조건의 쿼리를 어떻게 작성하고 실행할 수 있는지를 배우는 것에 있다.
견적 생성 로직은 아래 다이어그램처럼 생각할 수 있다.
이제 위 기준을 기반으로 실제 쿼리를 작성해보자.
ReportsService
에 createEstimate()
메서드를 만든다.
// reports.service.ts
createEstimate(estimateDto: GetEstimateDto) {
return this.repo
.createQueryBuilder()
.select('*')
.where('make = :make', { make: estimateDto.make })
.getRawMany();
}
이 쿼리는 make가 사용자가 입력한 값과 일치하는 모든 레코드를 반환한다.
<aside> 💡
파라미터 바인딩
참고로, :make
는 파라미터 바인딩을 위한 문법이다. { make: estimateDto.make }
는 실제 값을 바인딩하여 SQL 인젝션 공격을 방지하는 역할을 한다.
</aside>