JS/Nest.js

    [Nest JS] 게시글 업데이트

    [Nest JS] 게시글 업데이트

    * 서비스async updateBoardStatus(id: number, status:BoardStatus): Promise{ const board = await this.getBoardById(id); board.status=status; await this.boardRepository.save(board); return board;}* 컨트롤러id/status 형식으로 url을 줘야함 && body로 json을 줘야함 { status : private}ex) localhost3000:boards/4/status                    body  :  {status : private}@Patch('/:id/status') //수정은 patchupdateBoardStatus(@Param('id..

    [Nest JS] 게시글 삭제

    [Nest JS] 게시글 삭제

    * 메소드 선택* 컨트롤러@Delete('/:id')deleteBoard(@Param('id', ParseIntPipe) id: number){ //제공되는 파이프로 검사해주시고 return this.boardsService.deleteBoard(id);}*서비스async deleteBoard(id : number){ return this.boardRepository.delete(id); //기본제공되는 delete 사용}  * 없는경우 예외처리affected 속성을 이용하여 예외처리 구현.async deleteBoard(id : number){ const result = await this.boardRepository.delete(id); //기본제공되는 delete 사용 if(result.a..

    [Nest JS] 게시글생성 db / typeOrm 3.0 issued 해결 / @EntityRepository 해결

    [Nest JS] 게시글생성 db / typeOrm 3.0 issued 해결 / @EntityRepository 해결

    * serviceasync createBoard(createBoardDto : CreateBoardDto): Promise{ const {title,description} = createBoardDto; //db생성시 .create 이용해야 const board = this.boardRepository.create({ // id : uuid(), //자동으로 유니크한 값을 넣어줌 title : title, description : description, status : BoardStatus.PUBLIC }) await this.boardRepository.save(board); return board;} * controller@Post..

    [Nest JS] memory repository 2 DB repository / 게시글 조회 /

    [Nest JS] memory repository 2 DB repository / 게시글 조회 /

    import { Injectable, NotFoundException } from "@nestjs/common";import { BoardStatus } from "./board-statuss.enum.";import {v1 as uuid} from 'uuid';import { CreateBoardDto } from "./dto/create-board.dto";import { InjectRepository } from "@nestjs/typeorm";import { BoardRepository } from "./board.repository";@Injectable()export class BoardsService { constructor( @InjectRepository(BoardRepositor..

    [Nest JS] Repository 구현 / @EntityRepository issue

    [Nest JS] Repository 구현 / @EntityRepository issue

    * Repository ? 이전 : service에서 memory repository 사용개선 : db 관련일은 repository  에서 처리함  1. 리포지토리 클래스 생성import { EntityRepository, Repository } from "typeorm";import { Board } from "./board.entity";@EntityRepository(Board) //Board를 컨트롤하는 db임을 선언export class BoardRepository extends Repository{ } 2. 보드 모듈에 임포트 => 여러곳에서 사용import { Module } from '@nestjs/common';import { BoardsController } from './boards..

    [Nest JS] Postgres SQL 설치, type ORM, 엔티티(테이블) 생성

    [Nest JS] Postgres SQL 설치, type ORM, 엔티티(테이블) 생성

    * type ORM ? * 모듈 설치npm install pg typeorm @nestjs/typeorm --saveimport { TypeOrmModuleOptions } from "@nestjs/typeorm";export const typeORMConfig : TypeOrmModuleOptions = { type: 'postgres', host: 'localhost', port: 5432, username: 'postgres', password: '123456', database: 'board-app', entities: [__dirname + '/../**/*.entity.{js,ts}'], //엔티티 파일이 어디있는지(엔티티 이용해서 db table 생성함) synchronize:..

    [Nest JS] 커스텀 파이프 구현 => 유효성 체크

    [Nest JS] 커스텀 파이프 구현 => 유효성 체크

    * 구현import { ArgumentMetadata, PipeTransform } from "@nestjs/common";export class BoardStatusValidationPipe implements PipeTransform{ transform(value: any, metadata: ArgumentMetadata): any { console.log('val',value); console.log('meta data', metadata); return value; }}컨트롤러에서매개변수 검사용 파이프라인을 넣으면됨.@Patch('/:id/status') //수정은 patchupdateBoardStatus(@Param('id')id:string, @Body('status', B..

    [Nest JS] 없는 게시물 지울때 예외처리

    deleteBoard(id:string):void{ const found = this.getBoardByID(id); //filter => 해당 id제외 해서 새로운 boards를 만듬 this.boards = this.boards.filter((board) => board.id !== found.id);}