NestJS

게시물 생성하기 (Service 부분)

dev-byul 2022. 3. 17. 03:07
CRUD => C : Service 작성하기

게시물 생성 기능 만들기

  • 전 게시글에서 게시물에 대한 모델을 정의해주었습니다.
  • 정의한 모델을 이용해 게시물 생성하는 기능을 만들겠습니다.

게시물 생성 기능

  • 게시물에 관한 로직을 처리하는 곳은 Service 입니다.
  • Service에서 로직을 처리해준 후에 Controller에서 Service의 불러와 클라이언트에게 전달합니다.

게시물 ID 처리 방법

  • ID는 모든 게시물에 유니크(중복된 값이 없는) 해야 합니다.
  • 데이터베이스에 데이터를 넣어 줄때는 데이터베이스가 알아서 유니크한 값을 줍니다
    • Auto Increment 형태로 자동으로 ID 값을 증가시켜 처리합니다.
  • 지금은 데이터베이스와 연동하지 않은 상태이므로, 임의로 유니크한 값을 주기 위해 uuid 모듈을 이용해 유니크 값을 대입하겠습니다.

uuid 모듈

Link : https://www.npmjs.com/package/uuid

$ npm install uuid
  • —save 옵션을 사용하지 않은 이유는 npm5 부터는 —save 명령어 없이도 dependencies 항목에 자동으로 추가되기 때문입니다.
  • 우리는 uuid 모듈 중 timestamp 형태의 v1 버전을 사용할 것입니다. 자세한 내용은 링크를 달아놓았습니다.

게시물 생성 로직 작성

./boards/boards.service.ts

import { Injectable } from '@nestjs/common';
import { Board, BoardStatus } from './board.model';
import { v1 as uuid } from 'uuid';
@Injectable()
export class BoardsService {
  private boards: Board[] = [];

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

  createBoard(title: string, description: string): Board {
    const board: Board = {
      id: uuid(),
      title,
      description,
      status: BoardStatus.PUBLIC,
    };

    this.boards.push(board);
    return board;
  }
}

코드 풀이

게시물 생성 함수 파라미터 및 리턴값 정의

  • 우리는 함수를 호출할때 2개의 string 타입의 파라미터를 전달 받을 것입니다.
  • 호출한 곳에 우리가 미리 설계한 Board Model 형태의 데이터를 리턴값으로 되돌려 줄 것입니다.

board 변수 정의

  • 파라미터로 받은 데이터와 설치한 uuid 모듈을 이용해 id 값과 제목, 게시글 데이터를 정의합니다.
  • status 값은 우리가 enum 으로 작성한 BoardStatus 에서 PUBLIC 으로 정의합니다.
    • 지금은 게시글을 생성할 경우 공개글로 작성된다는 가정으로 진행합니다.

작성한 board 처리 로직

  • 작성한 board 변수를 우리가 데이터베이스 대신 작성한 boards 변수에 push 해줍니다.
  • 클라이언트가 작성한 글이 어떻게 작성 되었는지 알려주기 위해 정의한 board 변수를 리턴합니다.

'NestJS' 카테고리의 다른 글

DTO(Data Transfer Object)  (0) 2022.03.17
게시물 생성하기 (Controller 부분)  (0) 2022.03.17
Board Model 정의하기  (0) 2022.03.17
[실습] Board Module 로직 구현  (0) 2022.03.16
간단하게 알아보는 NestJS Service  (0) 2022.03.16