반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 코테준비
- 스프링부트
- 스프링공부
- nestjs
- Flutter
- JPA예제
- Kafka
- 자바공부
- 기술공부
- 스프링
- JPA 공부
- Axon framework
- 스프링 공부
- JPA공부
- DDD
- 기술면접공부
- 카프카
- querydsl
- nestjs공부
- 스프링부트공부
- JPA스터디
- 자료구조공부
- 플러터 공부
- 플러터 개발
- K8S
- nestjs스터디
- 알고리즘공부
- JPA
- 프로그래머스
- 코테공부
Archives
- Today
- Total
DevBoi
[NestJS] 커스텀 파이프 개발 본문
반응형
자바랑 살짝 비슷하게 생겼는데
커스텀 파이프는 PipeTranform을 구현해야 하고, 하위 transform()메소드를 구현해야한다
import { ArgumentMetadata, PipeTransform } from "@nestjs/common";
export class BoardStatusValidationPipe implements PipeTransform
{
transform(value: any, metadata: ArgumentMetadata) {
console.log(value)
console.log(metadata)
return value;
}
}
@Patch('/:id/status')
updateBoardStatus(
@Body('status',BoardStatusValidationPipe) status : BoardStatus,
@Param('id') id: string)
{
return this.boardService.updateBoardStatus(id,status);
}
로그는 이렇게 찍힌다. 메타데이터는 저렇다.
해당 메타데이터와 value에 대한 값을 알았으니, 내 맘대로 커스텀 해서 예외를 던지던 할수 있다
만약에 status가 이상한 값이라면? 정해진 형식이 아니라 이상한 값이 들어온다면 에러로 리턴해야한다.
이 경우에 쓰면 유용하다.
자 그러면 정해진 State만 쓸수있게끔 파이프를 구현해보자
import { ArgumentMetadata, BadRequestException, PipeTransform } from "@nestjs/common";
import { BoardStatus } from "../board.model";
export class BoardStatusValidationPipe implements PipeTransform
{
readonly StatusOption = [
BoardStatus.PRIVATE,
BoardStatus.PUBLIC
]
transform(value: any, metadata: ArgumentMetadata) {
if(!this.isVaildStatus(value))
throw new BadRequestException(`${value}) is nope!`);
return value;
}
private isVaildStatus(status: any){
const index =this.StatusOption.indexOf(status);
return index !== -1;
}
}
readonly 선언자로, 특정 배열에 값이 없으면 INDEXOF의 값으로 -1과 같은지 리턴하고 해당 값으로 에러 던짊의 기준을 정한다.
이렇다.
이렇게 확인할 수가 있다.
다음에는 디비 설치 및 연동을 진행해보자
반응형
'Develop > [NestJs]' 카테고리의 다른 글
[NestJs] TypeOrm 변경 및 Repository (0) | 2023.05.30 |
---|---|
[NestJS] MariaDB , TypeOrm 세팅 (0) | 2023.05.29 |
[NestJs] 예외 처리 (0) | 2023.05.27 |
[NestJs] Pipes란? (0) | 2023.05.27 |
[NestJS] 게시물 CRUD (0) | 2023.05.27 |