Nest.js - MySQL 연결

SSAD·2023년 2월 19일
0

BackEnd

목록 보기
35/44
post-thumbnail
post-custom-banner

보일러 플레이트 구조


TypeORM을 활용한 MySQL 연결

NoSQL은 Model 파일로 표현
SQL은 entity 파일로 표현

공식홈페이지

설치 명령

yarn add @nestjs/typeorm typeorm@0.2 mysql2

@nestjs/typeorm : NestJS용 TypeORM 설치
typeorm@0.2 : 일반 TypeORM 설치
mysql2 : TypeORM을 MySQL로 연결하기 위한 프로그램 설치


TypeORM을 활용한 NestJS와 MySQL 연결실습

TypeORM 셋팅

공식홈페이지

app.module.ts

// app.module.ts

import { ApolloDriver, ApolloDriverConfig } from '@nestjs/apollo';
import { Module } from '@nestjs/common';
import { GraphQLModule } from '@nestjs/graphql';
import { TypeOrmModule } from '@nestjs/typeorm';
import { BoardModule } from './apis/boards/boards.module';
import { Board } from './apis/boards/entities/board.entity';

@Module({
  imports: [
    BoardModule,
    GraphQLModule.forRoot<ApolloDriverConfig>({
      driver: ApolloDriver,
      autoSchemaFile: 'src/commons/graphql/schema.gql',
    }),
    TypeOrmModule.forRoot({
      type: 'mysql',            // 데이터 베이스 타입
      host: 'localhost',        // local 환경으로 진행
      port: 3306,               // mysql은 기본 port는 3306
      username: 'root',         // mysql은 기본 user는 root로 지정
      password: 'root',         // 본인의 mysql password 
      database: 'mysql',        // 연결할 데이터 베이스명
      entities: [Board],        // 데이터 베이스와 연결할 entity
      synchronize: true,        // entity 테이블을 데이터베이스와 동기화할 것인지
      logging: true,            // 콘솔 창에 log를 표시할 것인지
    }),
  ],
})
export class AppModule {}

Entity 생성 실습


import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm';

@Entity()
export class Board {
  @PrimaryGeneratedColumn('increment')
  number: number;

  @Column()
  writer: string;

  @Column()
  title: string;

  @Column()
  contents: string;
}

@Entity : Board class가 실행될 때, typeorm에 의해 Entity 테이블을 만듬

@PrimaryGeneratedColumn : 자동으로 생성 될 값의 컬럼

  • increment : 자동으로 숫자가 1씩 증가
  • uuid : 중복되지 않은 문자열 ID가 자동으로 생성

@Column : 표 형태에서 열에 해당 , 실제 들어갈 데이터의 값

profile
learn !
post-custom-banner

0개의 댓글