[server] TypeORM 사용

정종훈·2022년 7월 15일
0
post-custom-banner

개요

참조: https://wikidocs.net/158615

예전에 시퀄라이즈를 써봤지만 타입스크립트에서는 TypeORM이란게 있단다.

이것을 mysql과 연동시키려고 한다.

TypeORM으로 mysql과 데이터베이스 연결

참조:

https://wikidocs.net/158615

https://docs.nestjs.com/recipes/sql-typeorm#sql-typeorm

npm i typeorm@0.2.41 @nestjs/typeorm@8.0.2 mysql2

라이브러리 설치!

이제 @nestjs/typeorm 패키지에서 제공하는 TypeOrmModule을 이용하여

DB에 연결할 수 있음.

import { TypeOrmModule } from '@nestjs/typeorm';

@Module({
  imports: [
        ...
    TypeOrmModule.forRoot({
      type: 'mysql',
      host: 'localhost',
      port: 3306,
      username: 'root',
      password: 'test',
      database: 'test',
      entities: [__dirname + '/**/*.entity{.ts,.js}'],
      synchronize: true,
    }),
  ],
})
export class AppModule {}

여기서 username, password, database는 환경변수로 넘거주어서 사용


TypeORM으로 테이블 작성 등

참조:

https://docs.nestjs.com/recipes/sql-typeorm#sql-typeorm

https://wikidocs.net/158617

시퀄라이즈의 모델처럼 여기서는 엔티티로 만든다.

나는 엔티티 폴더를 따로 만들어 관리했다.

  • entity/user.entity.ts
import { Column, Entity, PrimaryColumn } from 'typeorm';

@Entity('User') // 유저라는 테이블을 만듦
export class UserEntity {
  @PrimaryColumn()
  id: string;

  @Column({ length: 30 })
  name: string;

  @Column({ length: 60 })
  email: string;

  @Column({ length: 30 })
  password: string;

  @Column({ length: 60 })
  signupVerifyToken: string;
}

테이블 nest.js에서 활용하기

참조: https://wikidocs.net/158617

users/user.module.ts

위에서 만들어진 유저 테이블을 사용할 수 있게 nest.js에 주입

import { TypeOrmModule } from '@nestjs/typeorm';
import { UserEntity } from './entity/user.entity';

@Module({
  imports: [
        ...
        TypeOrmModule.forFeature([UserEntity]),
    ],
    ...
})
export class UsersModule {}

의문) 테이블이 여러개일때 주입방법

한꺼번에 주입해야 되나? 아니면 *.ts 처럼 이렇게 할수도 있나?

users/user.service.ts

...
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { UserEntity } from './entity/user.entity';

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

공부) @InjectRepository 로 유저 레포지토리를 주입한다.

profile
괴발개발자에서 개발자로 향해보자
post-custom-banner

0개의 댓글