본문 바로가기
NestJs

[NestJs] 게시물 수정 및 삭제하기

by teamnova 2024. 3. 18.

안녕하세요. 오늘은 게시물 수정 및 삭제를 해보겠습니다.

 

먼저 service파일입니다.

 

import { Injectable, NotFoundException } from '@nestjs/common';
import { CreateBoardDto } from './board.dto';

@Injectable()
export class BoardService {
    private boards = [];
    private id = 1;
    create(createBoardDto: CreateBoardDto){
        createBoardDto.id = this.id;
        this.boards.push(createBoardDto);
        this.id++;
        return createBoardDto;
    }

    getAll(){
        return this.boards;
    }

    update(createBoardDto: CreateBoardDto,id: number) {
        const indexToDelete = this.boards.findIndex(function(board){
            return board.id === id;
        });

        if(indexToDelete === -1) {
            throw new NotFoundException(`Can't found board by ${id}`);
        }
        createBoardDto.id = id;
        this.boards[id - 1] = createBoardDto;
        return this.boards[id];
    }

    delete(id: number){
        const indexToDelete = this.boards.findIndex(function(board){
            return board.id === id;
        });

        if(indexToDelete === -1) {
            throw new NotFoundException(`Can't found board by ${id}`);
        }
        this.boards.splice(indexToDelete, 1);
    }
}

 

다음은 controller파일입니다.

import { Body, Controller, Delete, Get, Param, Post, Put, ValidationPipe } from '@nestjs/common';
import { BoardService } from './board.service';
import { CreateBoardDto } from './board.dto';

@Controller('board')
export class BoardController {
    constructor(
        private boardService: BoardService
    ){}

    @Post()
    create(@Body(ValidationPipe)createBoardDto: CreateBoardDto) {
        return this.boardService.create(createBoardDto);
    }

    @Get()
    getAll(){
        return this.boardService.getAll();
    }

    @Put('/:id')
    update(
        @Body(ValidationPipe)createBoardDto: CreateBoardDto,
        @Param('id')id: number) {
        return this.boardService.update(createBoardDto,+id);
    }

    @Delete('/:id')
    delete(@Param('id')id: number){
        return this.boardService.delete(+id);
    }
}

이제 테스트를 해볼게요.

먼저 3개의 게시물을 작성한 상태입니다. 그리고 수정한번 해보겠습니다.

그리고 삭제입니다.

3번 게시물은 수정이 되고 1번 게시물은 삭제가 된걸 볼 수 있습니다.