IT

DTO의 기본값을 설정할 수 있습니까?

itgroup 2023. 6. 17. 09:00
반응형

DTO의 기본값을 설정할 수 있습니까?

쿼리가 비어 있을 때 기본값을 사용할 수 있는 방법이 있습니까?

쿼리에 대해 다음 DTO가 있는 경우:

export class MyQuery {
  readonly myQueryItem: string;
}

그리고 내 요청에는 질문이 포함되지 않습니다.myQuery.myQueryItem정의되지 않습니다.기본값이 되도록 하려면 어떻게 해야 하나요?

DTO 클래스에서 직접 기본값을 설정할 수 있습니다.

export class MyQuery {
  readonly myQueryItem = 'mydefault';
}

기본값이 사용되도록 클래스를 인스턴스화해야 합니다.예를 들어 다음을 사용할 수 있습니다.ValidationPipe옵션으로transform: true값이 쿼리 매개 변수에 의해 설정되면 값이 재정의됩니다.

@Get()
@UsePipes(new ValidationPipe({ transform: true }))
getHello(@Query() query: MyQuery) {
  return query;
}

왜 이것이 작동합니까?

파이프는 모든 장식가에 적용됩니다.@Body(),@Param(),@Query()값을 변환할 수 있습니다(예:ParseIntPipe) 또는 검사를 수행합니다(예:ValidationPipe).

ValidationPipe내용.class-validator그리고.class-transformer검증을 위하여입력(일반 자바스크립트 객체)에 대해 유효성 검사를 수행할 수 있으려면 먼저 주석이 달린 dto 클래스로 변환해야 합니다. 즉, 클래스의 인스턴스를 만듭니다.설정과 함께transform: true자동으로 dto 클래스의 인스턴스를 만듭니다.

예(기본적으로 작동 방식):

class Person {
  firstname: string;
  lastname?: string = 'May';

  constructor(person) {
    Object.assign(this, person);
  }
}

// You can use Person as a type for a plain object -> no default value
const personInput: Person = { firstname: 'Yuna' };

// When an actual instance of the class is created, it uses the default value
const personInstance: Person = new Person(personInput);

D 값만 지정하면 다음과 같습니다.

export class MyQuery {
  readonly myQueryItem: string = 'value default';
}

언급URL : https://stackoverflow.com/questions/55478828/is-it-possible-to-set-default-values-for-a-dto

반응형