Class-transform을 다루기전에 Model Mapper에 대해서 먼저 대략적으로 알아보자.
- Model Mapper
이 Model Mapper란 쉽게 말해 object에 필드값을 원하는 모양의 object로 매핑시켜주는 라이브러리다.
Typescript에서 Model Mapper는 class-transform이 있다.
class-transform중에서 plainToInstance에 대해서 포스팅을 해보려고 한다.
해당 코드는 Nest.js에 service부 이다.
plainToInstance 는 무엇이며 excludeExtraneuosValues 는 무엇이고 이걸 왜 쓰는것일까?
하나하나씩 알아보자.
- 사용이유?
코드를 보면 DB Layer와 View Layer 사이의 역할을 분리하기 위해 Entity랑 Dto를 분리해서 사용한다.
이 Dto를 원하는 return값으로 뽑기위해서 매핑을 위해 plainToInstance를 사용한다.
- plainToInstance
plainToInstance 는 앞의 plain type의 object를 뒤의 class type으로 매핑해준다
그리고 아랫줄의 excludeExtraneuosValues 조건에 대해서 알아보자.
- excludeExtraneuosValues
이 옵션의 true는 expose() 밖에서 정의되지 않은 옵션 제거, class가 가지고 있지 않은 properties는 제외시키는 옵션이다.
해당 코드는 Dto 파일이다.
코드를 보면 @Expose() 라는게 있는데
excludeExtraneuosValues 옵션이 true면 @Expose() 가 포함된 것 들만 골라서 출력 해준다.
Ex) id, uuid, html
excludeExtraneuosValues 옵션이 false면 @Expose() 상관없이 전부 출력 해준다.
Ex) id, uuid, title, html
참고로 이 옵션은 class에서 다른 entity를 받아올떄는 사용할 수 없다.