Nest.js/TypeOrm
TypeOrm과 js-joda를 이용한 Date타입 대신 LocalDateTime 타입 사용하기
Dev갱이
2024. 7. 6. 20:40
728x90
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