Nest.js DB connection(MySQL)

윤태호·2023년 2월 17일
0

Nest(BackEnd)

목록 보기
3/3
post-thumbnail

Nest와 DB를 연결해보자

DB와 연결하기 위해서는 최상위 app.module에서 DB와 연결을 위한 설정을 해줘야한다.

1. Typeorm 설치

그 전에 우리는 Typeorm 패키지를 설치 해야한다. Typeorm은 DB와 객체를 매핑하여 MYSQL을 쿼리문을 직접 DB에서 짜지않고 사용할 수 있게 해준다.

npm install --save @nestjs/typeorm typeorm mysql2

2.이제 연결을 위한 설정을 시작한다.

2가지 방법이 있습니다.

  • Connection을 위한 config파일을 만들고 그 config를 module에서 불러와 사용
  • Module에서 직접 connection을 위한 설정을 정의

필자는 2번째 방법으로 하였습니다. 아래는 app.module의 코드입니다.

import { TypeOrmModule } from '@nestjs/typeorm';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { user } from './testuser/testuser.entity';
import { TestuserModule } from './testuser/testuser.module';
@Module({
  imports: [
    TypeOrmModule.forRoot({
      type: 'mysql',
      host: 'localhost',
      port: 3306,
      username: 'root',
      password: '1234',
      database: 'test',
      entities: [],
      synchronize: true,
    }),
    TestuserModule,
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

이 과정에서는 필자는 지속적인 커넥션 error를 겪었다. 필자와 같은 에러가 뜨면 한번 같이 시도하시길 바랍니다.
Error: Entity metadata for Star#user was not found. Check if you specified a correct entity object and if it's connected in the connection options.
위의 엔티티 부분을 설정을 안해줘서 생기는 에러이다. 위의 엔티티를 설정하는 방법도 두가지 방법이 있습니다.
1. Entity class의 명을 직접 호출하는 법
Ex)

TypeOrmModule.forRoot({
      type: 'mysql',
      host: 'localhost',
      port: 3306,
      username: 'root',
      password: '1234',
      database: 'test',
      entities: [user],
      synchronize: true,
    }), 
  1. entity의 이름을 가진 ts,js파일을 모두 호출하는 법
     TypeOrmModule.forRoot({
         type: 'mysql',
         host: 'localhost',
         port: 3306,
         username: 'root',
         password: '1234',
         database: 'test',
         entities: [__dirname+'../**/*.entity.{js,ts}'],
         synchronize: true,
       }),
    위의 코드처럼 설정해주면 다 불러올 수 있다. 근데 필자는 가끔 이렇게 설정해주면 Typeorm이 못 호출을 못하는 경우가 있어서 1번으로 호출하는것을 더 선호합니다.

3. DB에서 엔티티에서 선언한 테이블이 확인해보기


위 사진 처럼 user 테이블이 생긴것을 확인 할 수 있다.

뒤이어 Typeorm을 활용한 CRUD를 하는 글을 쓰러 오겠습니다.

profile
성장하는것을 제일 즐깁니다.

0개의 댓글