-
TypeOrm과 js-joda를 이용한 Date타입 대신 LocalDateTime 타입 사용하기Nest.js/TypeOrm 2024. 7. 6. 20:40728x90
js-joda에서 제공 하는 타입은 다음과 같다.
- LocalDate : 년,월,일 타입
- LocalTime : 분,초 타입
- LocalDateTime : 년,월,시,분,초 타입
- ZonedDateTime: joda/timezone과 함께 사용하며 특정 국가의 timezone에 따른 타입
이외에 다른 기능들은 공식문서에 설명이 되어 있다.
@js-joda/core 라이브러리를 설치 한다.
TypeOrm의 column 데코레이터의 transformer 프로퍼티와 ValueTransformer를 이용하여 js-joda를 이용하여 날짜 데이터 타입을 보다 효율적으로 다룰 수 있다.
js-joda에서 Convert from/ to native js 부분을 참고
- utils/convert-date-time.ts
- transformer/local-date-time.transformer.ts
- test.entity.ts
- test.entity.ts
오늘날짜보다 이전인 orderDateTime 가져오는 테스트 메서드
결론적으로 JS의 Date타입 대신 js-joda를 사용 했을때 다음과 같은 이점을 얻을 수 있다.
- 불변성을 가지는 Date객체를 사용할 수 있다.
- LocalDateTimeTransformer를 이용하여 저장할때는 JS Date객체로 자동 변환해서 저장하고 가져올때는 LocalDateTime 타입으로 가져온다.
- repository에서 가져온 필드는 LocalDateTime 타입이여서 js-joda에서 제공하는 다양한 메서드들을 사용 할 수 있다.
- find한 orderDateTime을 활용하는 예제
orderDateTime에 1달전의 monthValue값을 가져오면 6이 나오는걸 알 수 있다. 이처럼 js-joda에서 제공해주는 메서드로 날짜 데이터를 가공하는게 쉬워진다.
Reference
- (https://jojoldu.tistory.com/600)
- (https://www.npmjs.com/package/@js-joda/core)
- (https://js-joda.github.io/js-joda/manual/convert-native.html#convert-from-js-joda-temporal-to-a-date)
728x90'Nest.js > TypeOrm' 카테고리의 다른 글
TypeORM 쿼리빌더 사용시 where절 사용시 괄호 우선순위와 Brackets 사용 (0) 2024.08.10 TypeOrm에서 queryBuilder사용시 관계 데이터 집계 결과를 order by 하는 방법 (0) 2024.08.08 TypeOrm과 Postgresql에서 timestamp을 UpdateDateColumn 데코레이터 사용시 transformer 이슈 (0) 2024.07.06 @BeforInsert 와 @AfterInsert 사용시 주의할점 (0) 2024.05.02 NestJS에서 TypeOrm에서 쿼리로그 (0) 2024.04.22