NoSQL은 Model 파일로 표현
SQL은 entity 파일로 표현
공식홈페이지
설치 명령
yarn add @nestjs/typeorm typeorm@0.2 mysql2
@nestjs/typeorm : NestJS용 TypeORM 설치
typeorm@0.2 : 일반 TypeORM 설치
mysql2 : TypeORM을 MySQL로 연결하기 위한 프로그램 설치
공식홈페이지
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 {}
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 : 자동으로 생성 될 값의 컬럼
@Column : 표 형태에서 열에 해당 , 실제 들어갈 데이터의 값