Node.JS

NestJS TypeORM을 사용해보자

5kiran 2023. 2. 14.
반응형

TypeORM이란 무엇인가?

TypeORM은 node.js에서 실행되고 TypeScript에서 작성된 객체 관계형 매퍼 라이브러리 입니다.

 

TypeORM은 MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server, Oracle 등을 지원합니다.

 

ORM (Object Relational Mapping) 이란?

객체와 관계형 데이터 베이스의 데이터를 자동으로 변형 및 연결하는 작업입니다.

ORM을 이용한 개발은 객체와 데이터베이스의 변형에 유연하게 사용할 수 있습니다.

 

TypeORM 설치

npm i typeorm @nestjs/typeorm
npm i mysql2 // 사용하고 싶은 데이터베이스 설치

 

TypeORM 연결하기

typeORM 설정파일 생성

본인은 src/configs/typeorm.config.ts 로 생성

NestJS TypeORM을 사용해보자 - TypeORM이란 무엇인가? - ORM (Object Relational Mapping) 이란? - TypeORM 연결하기

typeORM 설정파일 작성

import { TypeOrmModuleOptions } from "@nestjs/typeorm";

export const typeOrmConfig : TypeOrmModuleOptions = {
  type: 'mysql',
  host: '127.0.0.1',
  port: 3306,
  username: 'root',
  password: 'root',
  database: 'test',
  entities: [],
  synchronize : true //Production 모드에서는 false로 해야함 데이터를 잃을 수 있음
}

typeORM 설정파일 연결

루트 module에서 import를 합니다.

app.module.ts

import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { typeOrmConfig } from './configs/typeorm.config';
import { UsersModule } from './users/users.module';
import { UsersService } from './users/users.service';

@Module({
  imports: [TypeOrmModule.forRoot(typeOrmConfig), UsersModule],
  controllers: [],
  providers: [],
})
export class AppModule {}

 

Entity 생성하기

본인은 src/entities/Users.ts로 생성

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

@Entity()
export class Users {
  @PrimaryGeneratedColumn()
  id:number

  @Column()
  name : string

  @Column()
  password : string
}

Entity 사용하기

users.Service.ts

import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Users } from 'src/entities/Users';
import { Repository } from 'typeorm';
import { CreateUserDto } from './dto/create.user.dto';

@Injectable()
export class UsersService {
  constructor(
    @InjectRepository(Users)
    private usersRepository: Repository<Users>,
  ) {}

  async createUser(data: CreateUserDto) {
    try {
      await this.usersRepository.create({
        name: data.name,
        password: data.password,
      });
    } catch (error) {}
  }
}

users.module.ts

import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { Users } from 'src/entities/Users';
import { UsersController } from './users.controller';
import { UsersService } from './users.service';

@Module({
  imports:[TypeOrmModule.forFeature([Users])], // imports 추가
  controllers: [UsersController],
  providers: [UsersService]
})
export class UsersModule {}
반응형

'Node.JS' 카테고리의 다른 글

@nestjs/config 사용법  (0) 2023.02.16
TypeORM queryRunner를 이용한 트랜잭션 제어  (0) 2023.02.15
NestJS Pipes 이용하기  (0) 2023.02.10
Nest.js를 시작해보자  (0) 2023.02.09
Socket.io 송수신 메소드  (0) 2023.01.12

댓글