본문 바로가기
Programming & Platform/NestJS

NestJS createQueryBuilder 사용하는 방법, 예시코드

by 코드스니펫 2024. 1. 10.
반응형

NestJS createQueryBuilder 사용하는 방법, 예시코드

 

nestjs logo

 

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 카테고리 인기글 ▼

 

 

NestJS JWT 토큰 유효 시간 설정하는 방법

NestJS JWT 토큰 유효 시간 설정하는 방법 NestJS에서 JWT(Json Web Token)을 사용하여 인증을 구현할 때, 토큰의 유효 시간을 설정하는 것은 중요한 보안 고려 사항 중 하나입니다. 이 글에서는 Nest.js의 Jwt

lemonlog.tistory.com

 

 

NestJS 앱의 시작, main.ts 기본 구조

NestJS 앱의 시작, main.ts 기본 구조 우리의 NestJS 앱이 여기서 시작됩니다. main.ts 파일은 우리 앱의 진입점이자, 새로운 모험의 문을 열어주는 열쇠입니다. 이 코드를 통해 앱이 어떻게 생성되고 구

lemonlog.tistory.com