반응형
    
    
    
  일단 로컬 데이터를 기반으로 컨트롤러, 서비스를 연결해보자
Controller
import { Controller, Get } from '@nestjs/common';
import { BoardsService } from './boards.service';
@Controller('boards')
export class BoardsController {
   constructor(private boardService: BoardsService){}
   
   @Get('')
   getAllBoard(){
      return this.boardService.getAllBoards();
   }
   
}
Service
import { Injectable } from '@nestjs/common';
@Injectable()
export class BoardsService {
    private boards = [];
    
    getAllBoards(){
        return this.boards;
    }
}
이렇게 하고 /boards를 하면 아래와 같이 나온다.
당연하다, 로컬 변수의 값이 없으니.. 물론 데이터를 추가하면 데이터가 잘 나온다.


board.model.ts를 만들 예정이다.
게시물에 대한 내용을 옮기고 주고 뭐 그런 dto같은 개념이다.
export interface Board{
    id: string;
    title: string;
    description: string;
    status: BoardStatus
}
export enum BoardStatus {
    PUBLIC = 'PUBLIC',
    PRIVATE = 'PRIVATE'
}
위와 같이 만들고
BoardService의 내용을 바꿔준다.
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){
        const board: Board = {
            id: uuid(),
            title,
            description,
            status: BoardStatus.PUBLIC
        }
        this.boards.push(board);
        return board;
    }
}
Controller도 조금 바꿔보자
import { Controller, Get } from '@nestjs/common';
import { BoardsService } from './boards.service';
import {Board} from './board.model'
@Controller('boards')
export class BoardsController {
   constructor(private boardService: BoardsService){}
   
   @Get('')
   getAllBoard(): Board[]{
      return this.boardService.getAllBoards();
   }
   
}
이렇게 되면 서비스에는 총 게시물 생성 에 대한 메소드가 생기고,
이게 전체 배열에 추가를 해준다. uuid는 임의로 id를 유니크한값으로 주기 위함이다.
무튼 이렇게 하면 생성 및 조회를 로컬 데이터 기반으로 동작하게 끔 구현할 수 있다.
마지막으로 동작 확인 및 컨트롤러에 추가해보자
import { Body, Controller, Get, Post } from '@nestjs/common';
import { BoardsService } from './boards.service';
import {Board} from './board.model'
@Controller('boards')
export class BoardsController {
   constructor(private boardService: BoardsService){}
   
   @Get('/')
   getAllBoard(): Board[]{
      return this.boardService.getAllBoards();
   }
   @Post('/create')
   createBoard(@Body('title') title: string,
               @Body('description') description: string){
      console.log(title);
      console.log(description)
   }
   
}


잘 나온다. 이제 service 로 해당 값을 넘겨보자

잘 가져온다.
마지막으로 수정한 컨트롤러 소스를 보자
import { Body, Controller, Get, Post } from '@nestjs/common';
import { BoardsService } from './boards.service';
import {Board} from './board.model'
@Controller('boards')
export class BoardsController {
   constructor(private boardService: BoardsService){}
   
   @Get('/')
   getAllBoard(): Board[]{
      return this.boardService.getAllBoards();
   }
   @Post('/create')
   createBoard(@Body('title') title: string,
               @Body('description') description: string){
         this.boardService.createBoard(title,description);
   }
   
}
이렇게 하면, 기본적인 CRUD까지는 아니고
생성 및 조회가 가능한것을 확인할 수있다.
반응형
    
    
    
  'Develop > [NestJs]' 카테고리의 다른 글
| [NestJS] DTO 사용 (1) | 2023.05.27 | 
|---|---|
| [NestJs] 게시판 정보 불러오기 및 게시판 마무리 (0) | 2023.05.27 | 
| [NestJS] 모듈, 컨트롤러, 서비스 생성 하기 (0) | 2023.05.22 | 
| [NestJs] 간단하게 동작과정에 대해서 살펴보기 (0) | 2023.05.22 | 
| [NestJS] 간단하게 내부 프로젝트 구성 살펴보기 (0) | 2023.05.22 | 
 
                  
                 
                  
                