Nest.js/class-transformer
-
외부 api사용시 class-transformer의 클래스 인스턴스화 하기Nest.js/class-transformer 2024. 7. 15. 15:51
외부에서 받은 response 결과가 리터럴 객체라서 추가 가공은 별도의 함수에서 처리 해야 하는데 이로 인해 상태와 행위가 따로 노는 응집력이 떨어지는 코드가 된다.그래서 class-transformer를 이용하여 클래스 인스턴스화 하여 받은 값 가공 로직을 클래스 내부에 둔다면 상태와 행위가 한 곳에 있는 응집력 있는 코드가 된다. 1. @Expose 데코레이터로 카멜케이스 스네이크2. @Exclude 데코레이터로 특정 필드 제외3. @Type 데코레이터로 중첩 객체 변환4. @Transforemr 데코레이터를 이용한 데이터 가공 Reference- (https://jojoldu.tistory.com/617)
-
class-transformer 사용시 plainToInstance 메서드 사용시 주의할점Nest.js/class-transformer 2024. 7. 7. 16:48
TestEntity@Entity({ name: 'test' })export class TestEntity { @PrimaryGeneratedColumn() id!: number; @Column({ name: 'content', type: 'text', }) content!: string; @Column({ type: 'timestamptz', transformer: new LocalDateTimeTransformer(), nullable: true, }) orderDateTime!: LocalDateTime; @Transform( ({ value }: { value: Date }) => { console.log('*******호출!!!******'); return value.toISOS..
-
Javascript Date타입 대신 date, time, date-time을 다루기Nest.js/class-transformer 2024. 7. 7. 15:02
- TypeOrm과 js-joda를 이용한 Date타입 대신 LocalDateTime 타입 사용하기 이전에 작성한 글을 참고 하면 좋다. createdAt, updatedAt 의 date-time 형식 createdAt나 updatedAt 칼럼을 database에서 가져와서 일련의 데이터 가공 작업을 하고 api response할때 ISO 8601 포맷으로 리턴을 해주어야 한다. 꽤나 오랜시간 고민을 많이 했다. repository에서 createdAt나 updatedAt 관련된 프로퍼티를 return 하는 방법을 고민 해보았다가 이것은 꽤나 많은 수정을 거쳐야 될것 같아서 아닌것 같았다.필요한 기능은 다음과 같다. database에서 select 해서 가져왔을때는 js-joda 타입으로 손쉽게 불변..