본문 바로가기
node.js

[Nest.js] 3. 모듈 생성하기

by Soo-minJeon 2022. 5. 29.

1. 시작하기

 

[Nest.js] 시작하기

(들어가기 전에) 🛠 왜 NestJS? - 기존에 node.js를 사용한다고 하면 아~ 그럼 Express 쓰겠네라고 생각을 할 만큼 그게 당연한 건 줄 알고 있었다. 여러 개발직군 채용공고를 보며 NestJS를 알게 되었고 N

developdiary-by-soominjeon.tistory.com

2. 기본구조 살펴보기 

 

[Nest.js] 기본구조 살펴보기

https://developdiary-by-soominjeon.tistory.com/12 [Nest.js] 시작하기 (들어가기 전에) 🛠 왜 NestJS? - 기존에 node.js를 사용한다고 하면 아~ 그럼 Express 쓰겠네라고 생각을 할 만큼 그게 당연한 건 줄 알..

developdiary-by-soominjeon.tistory.com


이제는 게시판 생성을 위한 모듈을 생성해보자. 

 

1. 새롭게 프로젝트를 생성하기 위한 작업들(자동으로 생성된 파일들 제거)

 

우리는 새롭게 모듈을 생성할 것이기 때문에 app.controller.spec.ts / app.controller.ts / app.service.ts 를 삭제하자

그러면 app.module.ts에 오류가 발생하는데 그 이유는 app.module.ts 파일을 들어가보면 우리가 삭제한

app.controller와 app.service를 import하고 있기 때문

import { Module } from '@nestjs/common';

@Module({
  imports: [],
})
export class AppModule {}

따라서 오류가 나는 부분을 삭제하면 app.module.ts는 위의 코드만 남게 된다.

 

test 폴더도 삭제해주자


2. Board 모듈 생성

 

- 터미널을 열고 아래와 같은 명령을 입력하자

nest g module boards

 

nest : nestCLI를 사용하겠다는 의미

g : generate의 약자

module : 모듈을 생성하겠다는 의미

boards : 생성하는 모듈의 이름

 

- app.module내에 import 코드가 추가되고 src 폴더 내에 boards 폴더가 생성된다


3. Boards 모듈 안에 필요한 것들 구성

 

- 필요한 것들 : Controller, Service, Entity, Repository, ValidationPipe


3-1. Boards Controller 생성하기

 

- Controllder는 @Controller 데코레이터로 클래스를 데코레이션하여 정의한다

- 핸들러는 @Get, @Post, @Delete 등과 같은 데코레이터로 장식된 컨트롤러 클래스 내의 단순한 메소드이다.

 

- 데코레이터 : @Controller('module name')

- 핸들러 : @Get, Post, Patch  + ('경로')

 

-모듈 생성한 것 처럼 터미널에 아래와 같은 명령을 입력하자

nest g controller boards --no-spec

--no-spec : 테스트를 위한 소스 코드 생성을 안하겠다는 의미

boards.module 내에 Controller 관련 코드가 추가되고 boads 폴더 내에 controller 파일이 생성된다


3-2. Boards 서비스 생성하기

 

- 아래와 같은 명령을 입력하자

nest g service boards --no-spec

boards.module내에 service 관련 코드가 추가되고 boards 폴더 내에 service 파일이 생성된다

 

- Injectable 데코레이터가 있으며 이 데코레이터를 이용해 다른 컴포넌트에서 이 서비스를 사용할 수 있다

- Board Service를 Controller 내에서 사용하기 위한 작업

import { Controller } from '@nestjs/common';
import { BoardsService } from './boards.service';

@Controller('boards')
export class BoardsController {
    // 서비스를 사용하기 위한 절차
    // private 로 선언하면 컨트롤러 내부의 property로 자동선언된다
    constructor(private boardsService: BoardsService) {}

    // 만약 서비스 안의 getAllBoards 메소드를 실행시키고 싶다면 다음과 같이 접근한다.
    this.boardsService.getAllBoards()
}

4. 코드 짜기

 

[본격적인 코드 짜기에 앞서]

- 나는 기본 CRUD기능을 개발할 것이기에 관련한 코드를 작성하였다.

 

-모든 기능들의 개발 순서는 service-> controller 순이다

 

- 보드에 글을 작성하고 / 공개글&비공개글 전환을 할 수 있으며 / 글에 포함된 정보는 title, descripton, status(공개/비공개)이다. 

- 이제 다음 글에서 실제로 코드를 작성해보도록 하자

'node.js' 카테고리의 다른 글

[Nest.js] 2. 기본구조 살펴보기  (0) 2022.05.28
[Nest.js] 1. 시작하기  (0) 2022.05.28