[TIL_2023.12 .20] Nest.JS-type orm

김효진·2023년 12월 21일
0
  1. 설치

$ npm install --save typeorm mysql2 또는
$ yarn add typeorm mysql2

  1. 사용방법 (따로 파일을 만들어도 되고 나 같은 경우에는 간단하게 메인파일에서 작성했다)

    1) 설정

// app.module.ts
import { Module } from '@nestjs/common';
import { BoardsModule } from './apis/boards/boards.module';
import { GraphQLModule } from '@nestjs/graphql';
import { ApolloDriver, ApolloDriverConfig } from '@nestjs/apollo';
import { TypeOrmModule } from '@nestjs/typeorm';
import { ConfigModule } from '@nestjs/config';

@Module({
  imports: [
    BoardsModule,
    ConfigModule.forRoot(), // 환경변수 사용
    GraphQLModule.forRoot<ApolloDriverConfig>({
      driver: ApolloDriver,
      autoSchemaFile: 'src/commons/graphql/schema.gql',
    }),
    
    // type orm 셋팅
    TypeOrmModule.forRoot({
      type: process.env.DATABASE_TYPE as 'mysql', // 특정 db타입만 값으로 들어올 수 있으며 env파일에서 환경변수를 불러오는 경우 다르게 인식하기 때문에 as 'mysql'을 뒤에 추가해 명시해줌
      host: process.env.DATABASE_HOST,
      port: Number(process.env.DATABASE_PORT),
      username: process.env.DATABASE_USERNAME,
      password: process.env.DATABASE_PASSWORD,
      database: process.env.DATABASE_DATABASE,
      entities: [__dirname + '/apis/**/*.entity.*'], // entity가 들어가 있는 모든 파일 변환(확장자를 ts로 하면 js로 변환과정에서 오류 생기므로 타입 대신 *을 사용했음)
      synchronize: true, // 스키마 자동 반영 여부
      logging: true, // 로그 메세지 남기는지 
    }),
  ],
})
export class AppModule {}

2) entity 파일 만들기

// board.entity.ts

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

@Entity() // 테이블 만듬
export class Board {

@PrimaryGeneratedColumn('increment') // 메인키, increment의 경우 1씩 증가하는 아이디가 부여됨
number: number;

@Column() // 컬럼(열에 해당함)
writer: string;

@Column()
title: string;

@Column()
contents: string;
}

공부하면서 일단 생각나는건 이정도이다.
혹시 빠트린 부분이 있다면 추후 업데이트 해야겠다.

profile
더 많은 사람들이 더 좋은 정보와 서비스를 누릴 수 있게!!

0개의 댓글