NestJS createQueryBuilder 사용하는 방법, 예시코드
NestJS는 TypeScript 기반의 서버 사이드 애플리케이션을 개발하는 데 사용되는 강력한 프레임워크입니다. 데이터베이스와의 상호작용은 매우 중요하며, 그 중에서도 typeorm 라이브러리의 createQueryBuilder를 사용하여 쿼리를 작성하는 방법에 대해 알아보겠습니다.
NestJS createQueryBuilder 사용법
1. createQueryBuilder 소개
createQueryBuilder는 TypeORM에서 제공하는 강력한 쿼리 빌더 중 하나입니다. 이를 사용하면 SQL 질의어를 직접 작성하는 대신, TypeScript를 사용하여 쿼리를 구성할 수 있습니다.
2. createQueryBuilder의 기본 구조
먼저, typeorm과 @nestjs/typeorm 패키지를 설치해줍니다.
npm install typeorm @nestjs/typeorm
그 후, @nestjs/typeorm 모듈을 imports 배열에 추가하여 TypeORM을 NestJS에 통합시킵니다.
// app.module.ts
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
@Module({
imports: [TypeOrmModule.forRoot()],
})
export class AppModule {}
3. createQueryBuilder 사용 예시
다음으로, 실제로 createQueryBuilder를 사용해보겠습니다. 예시로 간단한 User 엔터티를 대상으로 쿼리를 작성해보겠습니다.
// user.entity.ts
import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
username: string;
@Column()
email: string;
}
// user.service.ts
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { User } from './user.entity';
@Injectable()
export class UserService {
constructor(
@InjectRepository(User)
private readonly userRepository: Repository<User>,
) {}
async findUsersWithEmailContaining(keyword: string): Promise<User[]> {
return this.userRepository
.createQueryBuilder('user')
.where('user.email LIKE :keyword', { keyword: `%${keyword}%` })
.getMany();
}
}
위 예시에서 createQueryBuilder를 사용하여 User 엔터티를 대상으로 이메일에 특정 키워드를 포함하는 사용자를 찾는 메서드를 작성했습니다.
NestJS에서 TypeORM 쿼리 작성하기
NestJS에서 createQueryBuilder를 사용하여 TypeORM 쿼리를 작성하는 것은 강력하면서도 유연한 방법입니다. 이를 통해 TypeScript를 활용하여 타입 안정성을 유지하면서 데이터베이스와 상호작용할 수 있습니다. 개발자들은 프로젝트의 특정 요구에 따라 필요한 쿼리를 간단하게 작성할 수 있으며, 이는 프로젝트의 유지보수성과 확장성을 향상시킵니다.
▼ NestJS 카테고리 인기글 ▼
'Programming & Platform > NestJS' 카테고리의 다른 글
TypeORM 에러 해결, Entity Metadata Not Found (0) | 2024.03.26 |
---|---|
NestJS mailer 활용하여 이메일 보내는 방법 (0) | 2024.01.15 |
NestJS TypeORM 트랜잭션 사용방법, 예시코드 (0) | 2024.01.06 |
NestJS 빠른 테스트를 위한 명령어 npm run start:dev (0) | 2024.01.05 |
NestJS ejs 적용하는 방법, 동적 웹페이지 렌더링 하기 (0) | 2024.01.04 |