js-joda 로 TypeORM Date 타입 대체하기 (with NestJS)



• JavaScript의 Date Type은 연산에 관한 문제와 직관적이지 않은 인터페이스, 불변 보장의 부재 등으로 인해 많은 문제점을 가지고 있다. 이 때문에 백엔드 애플리케이션에서 날짜 타입을 다룰 때 외부 라이브러리에 의존하거나 불편한 방식의 연산을 사용해야 하는 경우가 많다.
• 이러한 문제를 해결하기 위해 js-joda 라이브러리를 사용하는 것을 추천한다. js-joda는 불변을 보장하고, 리치 인터페이스를 제공하며, 변경 실패 시 Error를 보장하고, 타임존을 지원한다. 또한, 직관적인 인터페이스를 제공하여 사용이 쉽다.
• TypeORM의 ValueTransformer 인터페이스는 데이터베이스와 ORM Entity 사이에서 데이터 변환을 담당하며, 이를 통해 RDBMS의 timestamp, Date, Datetime 등을 Javascript의 Date가 아닌 js-joda의 LocalDate, LocalDateTime으로 변환 받아 사용할 수 있다.
• LocalDateTimeTransformer와 LocalDateTransformer를 생성하여 각각의 ValueTransformer를 만들 수 있으며, 이를 Entity에 적용하면 애플리케이션에서는 LocalDateTime 또는 LocalDate로 되어있는 값을 DB 연산에서는 Date로 변환해서 사용하도록 할 수 있다.

북마크
공유하기
신고하기