-
[m1 맥북] - nest.js 공부하기 6. 게시물 생성하기Nest.js 2022. 4. 27. 00:09728x90
게시물 생성 기능 만들기
게시물에 관한 로직을 처리하는 곳은 Service입니다. 그래서 먼저 Service에서 로직을 처리해준 후에 Controller에서 서비스를 불러와주겠습니다.
Service -> Controller
//service import { Injectable } from '@nestjs/common'; import { Board, BoardStatus } from './board.model'; @Injectable() export class BoardsService { private boards: Board[] = []; //private 사용하는 이유는 클래스 내에서만 접근해서 수정 가능하게 하려고. getAllBoards(): Board[]{ //리턴값 타입지정 return this.boards; } createBoard(title: string, description: string) { const board: Board = { title : title, description: description, status: BoardStatus.PUBLIC } } }
게시물의 id값이 없어서 오류가 발생되는 모습이다.
게시물의 ID는 모든 게시물에 유니크 해야한다. 그래서 유니크한 값을 위해 uuid 모듈을 이용해서 유니크한 값을 준다.
uuid 모듈 설치
npm install uuid --save
//service import { Injectable } from '@nestjs/common'; import { Board, BoardStatus } from './board.model'; import { v1 as uuid } from 'uuid'; @Injectable() export class BoardsService { private boards: Board[] = []; //private 사용하는 이유는 클래스 내에서만 접근해서 수정 가능하게 하려고. getAllBoards(): Board[]{ //리턴값 타입지정 return this.boards; } createBoard(title: string, description: string) { const board: Board = { id : uuid(), title : title, description: description, status: BoardStatus.PUBLIC } this.boards.push(board); return board; } }
Controller에서 Service로직을 불러온다.
request와 response 부분 처리는 Controller 에서 해주면 됩니다.
//controller import { Body, Controller, Get, Post } from '@nestjs/common'; import { Board } from './board.model'; import { BoardsService } from './boards.service'; @Controller('boards') export class BoardsController { constructor(private boardsService : BoardsService){} @Get('/') getAllBoard(): Board[] { return this.boardsService.getAllBoards(); } @Post() createBoard( @Body('title') title : string, @Body('description') description : string ): Board { return this.boardsService.createBoard(title, description); } }
NestJS에서는 @Body body를 이용해서 가져옵니다.
이렇게 하면 모든 request에서 보내온 값을 가져올 수 있으며, 하나씩 가져오려면 @Body('title') title:string 이런식으로 가져오면 된다.
//한번에 가져올때 @Post() createBoard(@Body() body){ console.log('body',body); } @Post() createBoard( @Body('title') title: string, @Body('descriptiopn') description: string, ){ console.log(title); console.log(description); }
728x90'Nest.js' 카테고리의 다른 글
[m1 맥북] - nest.js 공부하기 8. 게시물 생성을 위한 DTO (0) 2022.05.21 [m1 맥북] - nest.js 공부하기 7. Data Transfer Object(DTO) (0) 2022.05.21 [m1 맥북] - nest.js 공부하기 5. Board Model 정의하기 (0) 2022.04.26 [m1 맥북] - nest.js 공부하기 4. 모든 게시물을 가져오는 Service 만들기 (0) 2022.04.24 [m1 맥북] - nest.js 공부하기 3. Board Service 만들기 (0) 2022.04.24