NestJS - CRUD API구현 중 수정 심화

박건태·2023년 7월 19일
0

nestjs

목록 보기
3/11

class-validator와 class-transformer을 이용하여 데이터 검증을 한다.

npm i class-validator class-transformer 설치

main.ts에서 파이프 연결하여 조건에 맞지않으면 통과되지 않음.


보이는 대로 IsString처럼 string인지를 검증하거나,
Min은 ()안에 숫자보다 큰지 작은지 검증한다.

참고로 NestJS의 라이프사이클은 이렇게 된다.

우리는 10번의 globalPipe를 추가해준 것이다.



resolver에서 update를 위해 argument들을 받아서 보내준 모습이다. 특이사항X

service에서 넘어온 args들을 받아주었고 수정할 product하나를 찾아서 원래 담겨져 있던 데이터와 수정할 데이터(넘어온 데이터)를 비교해서 수정된 부분만 수정해주고 객체(Product)자체를 다시 반환 하려한다.

그래서 const product에 this.productsRepository.findOne을 다시 실행해주었었는데, 수정이나 삭제에서는 로직안에서 만들었던 findOne(
하나의 product를 찾아서 불러올때 만들었던) 함수를 사용하는게 로직안에서 통일감을 주기 때문에 권장된다.

그래서 findOne을 재사용해주었고, 새로 만든 checkSoldout을 실행해주었는데

예외처리를 위해 만들어준 함수이다. 각각의 로직마다 예외처리를 해주면 규모가 커졌을때 너무 많은 수의 예외처리가 필요해지므로 하나의 함수를 만들어서 공통적으로 사용해 주는것이 좋다.

그리고 save함수를 사용하여 db에 저장하여 주는데, save함수의 특징은
1. 저장할 데이터 값에 id가 없으면 등록처리
2. 저장할 데이터 값에 id가 있으면 수정처리를 해준다.

그리고 특이사항으로 common폴더에 예외처리filter를 하나 만들어 주었다. 이건 전에 만든 pipe처럼 로직 중간에 실행되어 잘못된 값을 입력하거나 하였을때(예외가 발생했을때) 예외처리를 해준다. 이 역시 API하나하나 마다 작성하면 너무 많아지므로 공통적으로 생성하여 main.ts에 추가해준다.

1개의 댓글

comment-user-thumbnail
2023년 7월 19일

뛰어난 글이네요, 감사합니다.

답글 달기