TypeORM은 node.js에서 실행되고 typeScript로 작성된 객체 관계형 매퍼라이브러리 입니다.
TypeORM은 MySQL, PostgreSQL, MariaDB, SQLite,MS SQL Server, ORACLE, SAP Hana 및 WebSql과 같은 여러 데이터베이스를 지원합니다.
객체와 관계형 데이터베이스의 데이터를 자동으로 변형 및 연결하는 작업입니다.
ORM을 이용한 개발은 객체와 데이터베이스의 변형에 유연하게 사용할 수 있다.
모델을 기반으로 데이터베이스를 테이블 체계를 자동으로 생성합니다.
데이터베이스에서 개체를 쉽게 삽입 업데이트 및 삭제 할 수 있습니다.
테이블 간의 매핑(1:1,1:n, n:m)을 만듭니다.
간단한 CLI 명령을 제공합니다.
TypeORM은 간단한 코딩으로 ORM 프레임 워크를 사용하기 쉽습니다.
TypeORM은 다른 모듈과 쉽게 통합됩니다.
npm install pg typeorm @nestjs/typeorm --save
doc
https://docs.nestjs.com/techniques/database
http://typeorm.delightful.studio/classes/_repository_repository_.repository.html
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { BoardRepository } from './board.repository';
import { BoardsController } from './boards.controller';
import { BoardsService } from './boards.service';
@Module({
imports: [TypeOrmModule.forFeature([BoardRepository])],
controllers: [BoardsController],
providers: [BoardsService],
})
export class BoardsModule {}
import { EntityRepository, Repository } from "typeorm";
import { Board } from "./board.entity";
@EntityRepository(Board)
export class BoardRepository extends Repository<Board>{
}
import { BaseEntity, Column, Entity, PrimaryGeneratedColumn } from 'typeorm';
import { BoardStatus } from './board.model';
@Entity()
export class Board extends BaseEntity {
@PrimaryGeneratedColumn() //pk 명시
id: number;
@Column()
title: string;
@Column()
description: string;
@Column()
status: BoardStatus;
}
-app.modeul
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { BoardsModule } from './boards/boards.module';
import { typeORMConfig } from './configs/typeorm.config';
@Module({
imports: [TypeOrmModule.forRoot(typeORMConfig), BoardsModule],
})
export class AppModule {}
@Injectable()
export class BoardsService {
constructor(
@InjectRepository(BoardRepository)
private boardRepository: BoardRepository,
){}