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