NestJS

eunseo·2021년 4월 6일
7

✔ NestJS란 ?

  • Nodejs 위에서 움직이는 프레임워크
  • 구조가 있어서 큰 규모의 백엔드를 쉽게 만들 수 있음.
  • 모듈시스템 [ imports, controllers, providers]

    https://docs.nestjs.com/

👉 SetUp

  • npm i -g @nestjs/cli
  • cd 프로젝트 만들 폴더
  • nest new
    • Create controller ( nest g co) => URL, REQUEST
    • Create service (nest g s) => DB(query)
    • Create module (nest g mo)

👉 실행순서✨

  • main.ts -> root module(app.module.ts) -> controller -> service -> DB

✔ TypeOrm - mariaDB 😃

https://typeorm.io/ 문서 참고

App module

  • TypeOrm module 연결
@Module({
  imports: [
    ConfigModule.forRoot({
      envFilePath: '.env.development',
    }),
    TypeOrmModule.forRoot({
      type: 'mariadb',
      host: process.env.DB_HOST,
      port: 3306,
      username: process.env.DB_USER,
      password: process.env.DB_PW,
      database: process.env.DB_DATABASE,
      entities: [Movie],
      synchronize: true,
    }),
    moviesModule,
  ],
  controlle

movies.module

  • MovieRepository 연결
@Module({
  imports: [TypeOrmModule.forFeature([MovieRepository])],
  providers: [MoviesService],
  controllers: [MoviesController],
  exports: [MoviesService],
})
export class moviesModule {}

movieReppository

  • Movie Entity 연결
import { EntityRepository, Repository } from 'typeorm';
import { Movie } from './entities/movie.entity';

@EntityRepository(Movie)
export class MovieRepository extends Repository<Movie> {}

✔ [DTO and Validation]

  • npm i class-validator (class 유효성 검사)
  • npm I class-transformer (원하는 type으로 바꿔줌)

👉 DTO란?😉

  • 데이터 전송 객체를 의미함
  • DTO TYPE 객체를 만든다 dto/create-movie.dto ( service, controller에 이 type을 넣음)
  • 파이프(middleware) 를 만들자!
  • 유효성 검사
  • Dto만들면 body에서 json으로 데이터 받을 때 객체안에서 프로퍼티 사용 편리함!

✔ Unit-Test🔎

  • Jest 사용 => spec, test .ts 파일을 찾는다.
  • DB 건드리지 않기 위해서는 MOCK 이용하자
  • mockRepository 객체를 생성 => 객체는 얕은 복사, 원시타입은 깊은 복사
  • find(), findOne(), create() 함수 : Promise => MockResolveValue 이용
  • return값 미리 정하면 얕은복사 이므로 service에서도 리턴값 바뀜.

✔ env 파일을 이용해서 TypeOrm config 설정

  • $ npm i @nestjs/config
profile
backend developer

0개의 댓글