본문 바로가기

verdantjuly/Today I Learned

TIL 20230929

728x90

이번 주 목표

이력서 5개 넣기

오늘 목표

PR review resolve

오늘 한 것

PR review resolve

- 비동기함수를 호출하고 바로 return 하는 경우 await 제거

- isObject가 아닌 DTO로 유효성 검사

- 객체 타입인 경우 DTO검사 + isArray

 

1. async await

문제

비동기 함수를 호출하고 바로 return 하는데 await를 걸어두었다.

시도

바로 return 하는 부분은 await를 제거하였다.

해결

해결!

알게된 것

비동기 함수를 호출하고 바로 return 할 때는 await를 할 필요가 없다.

try-catch문 안에서 await를 하는 것은 에러를 잡아내려는 목적이 있으므로

await의 존재 이유가 있다. 

 

2. 객체 안의 배열 또는 객체의 유효성 검사

문제

userEntity의 DTO를 IsObject로 받았다.

시도

ValidatedNested와 Type을 이용하여 객체 안의 배열객체로 DTO를 받게 만들었다.

DTO는 createUserDto를 사용하면 입력 값이 많아 UserToDeviceDto를 새로 만들어서

필요한 userId만 입력하고 유효성 검사 되게 하였다.

참고 자료  : https://dev.to/avantar/validating-nested-objects-with-class-validator-in-nestjs-1gn8

해결

이 경우 IsArray를 추가해야 값이 없는 경우 유효성 검사가 되므로

@IsArray를 추가하였다.

  @IsArray()
  @ValidateNested({ each: true })
  @Type(() => UserToDeviceDto)
  readonly user: UserToDeviceDto[];

Is Array 추가 이후 값이 없을 때 유효성 검사에 걸리게 된다.

알게 된 점

ValidatedNested와 Type을 이용하여 객체 또는 배열의 유효성검사를 할 수 있다.

새로운 DTO를 만들어서 이용할 수 있다.

배열객체 또는 객체 타입인 경우 IsArray 또는 IsObject를 추가하여 빈 값을 걸러낸다.

 


정리 

비동기 함수를 호출하고 바로 return 할 때는 await를 할 필요가 없다.

try-catch문 안에서 await를 하는 것은 에러를 잡아내려는 목적이 있으므로

await의 존재 이유가 있다. 

 

ValidatedNested와 Type을 이용하여 객체 또는 배열의 유효성검사를 할 수 있다.

새로운 DTO를 만들어서 이용할 수 있다.

배열객체 또는 객체 타입인 경우 IsArray 또는 IsObject를 추가하여 빈 값을 걸러낸다.

KPT

Keep

매일 열심히 발전하려고 하는 것

잘 질문하는 것

Problem

조금 더 찾아보려는 노력이 필요함

Try

몇 시간 정도는 스스로 찾아보기

소감

오늘은 새로운 것들을 많이 알게 되어 즐거웠다.

사이드 프로젝트 팀과 함께하면서 많은 것을 얻고 발전이 있는 것 같다.

앞으로도 파이팅!

 

 

 

 

'verdantjuly > Today I Learned' 카테고리의 다른 글

TIL 20231007  (0) 2023.10.07
TIL 20231004  (0) 2023.10.04
TIL 20230928  (0) 2023.09.28
TIL 20230926  (0) 2023.09.26
TIL 20230925  (0) 2023.09.25