주요 변경 사항
모든 드라이버가 동일한 동작을 하도록 Postgres 타임스탬프 매핑을 변경했습니다.
❗ postgres.js
드라이버 인스턴스를 수정하여 날짜를 항상 문자열로 반환하도록 변경했습니다. 이제 Drizzle는 선택한 mode
에 따라 매핑된 날짜를 문자열로 제공합니다. 단, postgres.js
드라이버 인스턴스를 Drizzle에 전달하면 해당 객체의 날짜 관련 동작이 변경되어 항상 문자열로 반환됩니다.
이 변경 사항은 주의 사항으로 마이너 릴리스로 배포했습니다:
-
타임스탬프를 사용하면서 특정 응답을 기대했다면, 이제 동작이 변경됩니다. 드라이버에 매핑할 때 타임존이 있거나 없는 타임스탬프 모두
.toISOString
을 사용합니다. -
Drizzle 외부에서
postgres.js
드라이버를 사용 중이라면, Drizzle에 전달된 모든postgres.js
클라이언트는 날짜 관련 동작이 변경됩니다. 응답에서 모든 날짜는 문자열로 반환됩니다.
postgres.js
에서 변경된 파서는 다음과 같습니다.
const transparentParser = (val: any) => val;
// postgres.js 기본 날짜 파서 재정의: https://github.com/porsager/postgres/discussions/761
for (const type of ['1184', '1082', '1083', '1114']) {
client.options.parsers[type as any] = transparentParser;
client.options.serializers[type as any] = transparentParser;
}
이상적으로는 거의 모든 다른 드라이버와 마찬가지로, 쿼리별로 매핑을 변경할 수 있는 기능이 있어야 합니다. 이는 드라이버 클라이언트가 변경되지 않음을 의미합니다. postgres.js
라이브러리 제작자에게 쿼리별 매핑 인터셉터를 지정할 수 있는 가능성에 대해 문의할 예정이며, 이를 통해 모든 사용자에게 더 나은 경험을 제공할 계획입니다.
만약 이 기능이 이미 postgres.js
에 존재하는데 우리가 간과했다면, Discord에서 알려주세요!
타임존이 있거나 없는 타임스탬프에 대한 추가 참고 자료는 문서에서 확인할 수 있습니다.
postgres.js
드라이버와 Drizzle를 시작하는 방법은 여기에서 확인하세요.
수정 사항
- 모드 문자열이 포함된 타임스탬프가 문자열 대신 Date 객체로 반환되는 문제 수정 (#806)
- 날짜 데이터가 항상 Date 객체로 처리되도록 수정 (#971)
- 타임스탬프와 자바스크립트의 datetime 객체 간 불일치 문제 해결 (#1176)
- 타임스탬프 컬럼이 문자열 타입으로 표시되지만 실제로는 Date 객체를 반환하는 문제 수정 (#1185)
- PostgreSQL 날짜 컬럼의 잘못된 데이터 타입 문제 해결 (#1407)
- UTC로 설정된 TimeZone을 사용할 때 잘못된 타임스탬프 변환 문제 수정 (#1587)
- PostgreSQL에서 타임스탬프와 타임존을 함께 사용할 때 밀리초가 제거되는 문제 해결 (#1061)
- AWS Data API를 사용하여 타임스탬프 필드를 업데이트할 때 발생하는 문제 수정 (#1164)
- 관계형 쿼리에서 잘못된 날짜가 반환되는 문제 해결 (#895)