JS
[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] 커스텀 파이프 구현 => 유효성 체크
* 구현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);}
[Nest JS] 없는 게시물 찾을때 예외처리
* 문제 : ewe라는 게시물을 찾으면 빈칸이 나온다.//localhost:3030/boards/1234(id) 가져오는 방법 = @param@Get('/:id')getBoardByID(@Param('id') id:string) : Board{ return this.boardsService.getBoardByID(id);} * fixgetBoardByID(id:string): Board{ const found = this.boards.find((board) => board.id===id); if(!found){ throw new NotFoundException(); } return found;} * 원하는 msg 넣기getBoardByID(id:string): Board{ const fo..
[Nest JS] 파이프 for 유효성체크
* 파이프 실습npm install class-validator class-transformer --save * dto 변수위에 @IsNotEmpty 등 달아주기import { IsNotEmpty } from "class-validator";export class CreateBoardDto{ @IsNotEmpty() title:string; @IsNotEmpty() description:string;} * 컨트롤러에서 @UsePipe 달아주기//생성은 post@Post()@UsePipes(ValidationPipe)createBoard( @Body() createBoardDto : CreateBoardDto) : Board{ return this.boardsService.createB..
[Nest JS] Update 구현
* 서비스updateBoardStatus(id:string, status : BoardStatus) : Board{ const board = this.getBoardByID(id); board.status = status; return board;} * 컨트롤러url의 값은 @Param으로 받고json값은 @Body로 받는듯?@Patch('/:id/status') //수정은 patchupdateBoardStatus(@Param('id')id:string, @Body('status') status:BoardStatus){ return this.boardsService.updateBoardStatus(id,status);}
[Nest JS] ID로 특정 게시물 가져오기 / 지우기
* 서비스getBoardByID(id:string): Board{ return this.boards.find((board)=>board.id === id);}Array.find 사용 * 컨트롤러//www.sdfasdf?id=1234 가져오는 방법 = @param@Get('/:id')getBoardByID(@Param('id') id:string){ return this.boardsService.getBoardByID(id);}ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ* 지우기 구현* 서비스deleteBoard(id:string):void{ //filter => 해당 id제외 해서 새로운 boards를 만듬 this.boards = this.boards.filter((board)..
[Nest JS] DTO
* 문제 :* 해결 : DTOexport class CreateBoardDto{ title:string; description:string;} * 컨트롤러//전@Post()createBoard( @Body('title') title:string, @Body('description') description:string, ) : Board{ return this.boardsService.createBoard(title,description);}//후//생성은 post@Post()createBoard( @Body() createBoardDto : CreateBoardDto) : Board{ return this.boardsService.createBoard(createBoardDto);..