NestJS에서의 자바스크립트 데이터베이스 관리

NestJS는 Node.js 기반의 프레임워크로, 백엔드 어플리케이션을 구축하기 위한 훌륭한 도구입니다. NestJS를 사용하면 자바스크립트를 기반으로 한 데이터베이스를 간편하게 관리할 수 있습니다.

Sequelize를 사용한 데이터베이스 관리

Sequelize는 자바스크립트로 작성된 ORM(Object-Relational Mapping) 라이브러리입니다. 이 라이브러리를 NestJS에서 사용하면 데이터베이스 관리 작업을 더욱 편리하게 할 수 있습니다.

먼저, Sequelize를 NestJS 프로젝트에 설치해야 합니다. 아래 명령어를 사용하여 Sequelize를 설치하세요:

npm install --save sequelize sequelize-typescript mysql2

Sequelize를 설치한 후, 데이터베이스 연결 설정을 해야 합니다. app.module.ts 파일에서 Sequelize를 설정할 수 있습니다.

import { SequelizeModule } from '@nestjs/sequelize';

@Module({
  imports: [
    SequelizeModule.forRootAsync({
      useFactory: async () => ({
        dialect: 'mysql',
        host: 'localhost',
        port: 3306,
        username: 'your-username',
        password: 'your-password',
        database: 'your-database',
        autoLoadModels: true,
        synchronize: true,
        models: [User],
      }),
    }),
  ],
})
export class AppModule {}

위 코드에서 useFactory 함수 안에서 데이터베이스 연결 정보를 설정하고, 모델을 자동으로 로드하도록 설정하는 부분을 확인할 수 있습니다.

다음으로는 모델을 정의해야 합니다. 모델은 데이터베이스 테이블과 매핑됩니다. 아래는 사용자(User) 모델의 예시입니다.

import { Table, Column, Model } from 'sequelize-typescript';

@Table
export class User extends Model {
  @Column
  name: string;

  @Column
  age: number;
}

위 코드에서는 @Table 데코레이터를 통해 테이블과 모델을 매핑하고, @Column 데코레이터를 통해 각 필드의 데이터 타입을 설정합니다.

마지막으로, NestJS 서비스나 컨트롤러에서 Sequelize를 활용하여 데이터베이스 작업을 수행할 수 있습니다. 아래는 사용자 생성 서비스의 예시입니다.

import { Injectable } from '@nestjs/common';
import { InjectModel } from '@nestjs/sequelize';
import { User } from './user.model';

@Injectable()
export class UserService {
  constructor(@InjectModel(User) private userModel: typeof User) {}

  async createUser(name: string, age: number) {
    await this.userModel.create({ name, age });
  }
}

위 코드에서는 @InjectModel 데코레이터를 통해 User 모델을 주입받아 사용하여, 데이터베이스에 새로운 사용자를 생성하는 작업을 수행할 수 있습니다.

이와 같이 NestJS에서 Sequelize를 활용하면 간편하고 편리하게 자바스크립트 데이터베이스를 관리할 수 있습니다. 추가적인 Sequelize 설정이나 다른 ORM 라이브러리에 대한 정보는 공식 문서를 참고하시기 바랍니다.

참고 문서:

#NestJS #Sequelize