본문으로 바로가기

docs.nestjs.com/techniques/database

 

Documentation | NestJS - A progressive Node.js framework

Nest is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with TypeScript and combines elements of OOP (Object Oriented Progamming), FP (Functional Programming), and FRP (Functional Reac

docs.nestjs.com

docs.nestjs.com/recipes/sql-typeorm

 

Documentation | NestJS - A progressive Node.js framework

Nest is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with TypeScript and combines elements of OOP (Object Oriented Progamming), FP (Functional Programming), and FRP (Functional Reac

docs.nestjs.com

공식 문서에서 typeORM + mysql 조합으로 예시를 들어주고 있으니 참고하셔야 합니다.

database 부분에서 TypeORM Integration을 꼼꼼히 읽읍시다.

 

 

why typeORM?

 

For integrating with SQL and NoSQL databases, Nest provides the @nestjs/typeorm package. Nest uses TypeORM because it's the most mature Object Relational Mapper (ORM) available for TypeScript. Since it's written in TypeScript, it integrates well with the Nest framework.

 

what else?

 

@nest/sequelize로 제공하고 있기는 하지만 ts로 작성하는데 typeORM을 안 쓸 이유가 없죠. 거죠 typeORM이 훨씬 편하기도 하구요. @nest/mongoose도 제공합니다. mongoDB을 사용하실 분은 이걸 사용하시면 되겠습니다.

 

 

Installation

yarn add @nestjs/typeorm typeorm mysql

 

appModule 부분에 다음과 같이 TypeORMModule을 세팅해주면 됩니다.

해당 옵션에 대해 알고 싶다면 TypeORM 공식 문서의 Connetion Option 부분을 참고합시다. 이 부분은 DB별로 다르니 문서를 참고해가며 합시다.

typeorm.io/#/connection-options

 

TypeORM - Amazing ORM for TypeScript and JavaScript (ES7, ES6, ES5). Supports MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server,

 

typeorm.io

// eslint-disable-next-line @typescript-eslint/no-var-requires
require('dotenv').config();
import { Module } from '@nestjs/common';
import { GraphQLModule } from '@nestjs/graphql';
import { TypeOrmModule } from '@nestjs/typeorm';
import { RestaurantsModule } from './restaurants/restaurants.module';

@Module({
  imports: [
    RestaurantsModule,
    TypeOrmModule.forRoot({
      type: 'mysql',
      host: 'localhost',
      port: 3306,
      username: process.env.MYSQL_USERNAME,
      password: process.env.MYSQL_PASSWORD,
      database: 'ubereats',
      entities: [],
      synchronize: true, // Setting synchronize: true shouldn't be used in production 
    }),
    GraphQLModule.forRoot({
      autoSchemaFile: true, // in memory
      debug: true,
      playground: true,
    }),
  ],
  controllers: [],
  providers: [],
})
export class AppModule {}

 

🚨 주의! 

Setting synchronize: true shouldn't be used in production - otherwise you can lose production data.

 

 

 

 

 


darren, dev blog
블로그 이미지 DarrenKwonDev 님의 블로그
VISITOR 오늘 / 전체