[Nest js] basic - model 정의

giyeon·2022년 3월 11일
0

nest js - basic

목록 보기
3/8

이 포스팅은 Youtube 'John Ahn'의 '따라하면서 배우는 NestJS'를 참고했습니다.

만약 board라는 게시물이 있다면 게시물 하나하나는 고유한 Id가 있을거에요.
그 외에 제목, 내용, 글쓴이 등등이 board 하나에 포함될 거에요.

이러한 것들을 정의해주는 것이 model정의 입니다.
model을 정의하기 위해서 파일을 생성해요.

생성한 파일에 class를 이용하거나 Interface를 이용합니다.
이 두가지는 약간의 차이점이 있어요.

class는 변수의 타입을 체크하며, 인스턴스또한 생성이 가능합니다.
Interface는 변수의 타입만 체크합니다. 추가적인 인스턴스는 생성이 불가능해요.

저는 board의 구조만 정의하기 위해서 Interface를 사용해볼게요.

만약 데이터베이스 연동으로 Entity를 사용한다면 Entity에서 Model이 정의되기 때문에 model파일은 필요 없어집니다.

📕 Model 정의

board.model.ts

export interface Board {
  id: string;
  title: string;
  desc: string;
  status: BoardStatus;
}

export enum BoardStatus {
  PUBLIC = 'PUBLIC',
  PRIVATE = 'PRIVATE',
}

Interface로 Board라는 Model을 정의합니다.
각각의 Board들은 id, title, description, status값을 가져요.
(status는 공개, 비공개 상태를 의미하며 enum type을 가집니다.)

정의한 Model을 Service에서 사용해볼게요.

📕 Service에서 Model사용하기

boards.service.ts

import { Injectable } from '@nestjs/common';
import { Board } from './boards.model';

@Injectable()
export class BoardsService {
  private boards: Board[] = [];

  getAllBoards(): Board[] {
    return this.boards;
  }
}

boards 라는 array는 Board Model의 집합이에요.

getAllBoard() method는 Board Model을 요소로 가지는 array를 return 하게되어서
return type을 지정해줍니다. (typescript)


boards.controller.ts
똑같이 service에서의 return 값을 사용하는 controller에서도 return 값을 지정해주면 더 좋겠죠.

...
  @Get('/')
  getAllBoard(): Board[] {
    return this.boardsService.getAllBoards();
  }
...
profile
Web , App developer wannabe 🧑🏻‍💻

0개의 댓글