$ npm install --save typeorm mysql2 또는
$ yarn add typeorm mysql2
사용방법 (따로 파일을 만들어도 되고 나 같은 경우에는 간단하게 메인파일에서 작성했다)
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;
}
공부하면서 일단 생각나는건 이정도이다.
혹시 빠트린 부분이 있다면 추후 업데이트 해야겠다.