* 구현
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') //수정은 patch
updateBoardStatus(@Param('id')id:string, @Body('status', BoardStatusValidationPipe) status:BoardStatus){
return this.boardsService.updateBoardStatus(id,status);
}
* value, metadata가 무엇인가?
value : dfgdfs
metadata : [function: String] , type : body , data : status
* 문제 : 상태는 private, public 만 와야함
* 해결 : 커스텀 파이프 구현
import { ArgumentMetadata, BadRequestException, PipeTransform } from "@nestjs/common";
import { BoardStatus } from "../board.model";
export class BoardStatusValidationPipe implements PipeTransform{
transform(value: any, metadata: ArgumentMetadata): any {
value = value.toUpperCase();
if(!this.isStatusValid(value)){
throw new BadRequestException('${value} isn`t in the status options');
}
return value;
}
//get 전용 멤버변수
readonly StatusOptions=[
BoardStatus.PUBLIC,
BoardStatus.PRIVATE
];
private isStatusValid(status: any) {
const index = this.StatusOptions.indexOf(status);
return index !== -1 ;
}
}
'JS > Nest.js' 카테고리의 다른 글
[Nest JS] Repository 구현 / @EntityRepository issue (0) | 2024.08.17 |
---|---|
[Nest JS] Postgres SQL 설치, type ORM, 엔티티(테이블) 생성 (0) | 2024.08.17 |
[Nest JS] 없는 게시물 지울때 예외처리 (0) | 2024.08.17 |
[Nest JS] 없는 게시물 찾을때 예외처리 (0) | 2024.08.17 |
[Nest JS] 파이프 for 유효성체크 (0) | 2024.08.17 |