DrizzleORM v0.30.0 版本发布
2024年3月7日
重大变更
Postgres 时间戳映射已更改,以使所有驱动程序行为保持一致。
❗ 我们已修改 `postgres.js` 驱动程序实例,使其始终以字符串形式返回日期,然后 Drizzle 将根据所选的 `mode` 为您提供字符串或映射日期。您可能遇到的唯一问题是,一旦您在 Drizzle 内部提供了 `postgres.js` 驱动程序实例,此对象的日期行为将发生变化,日期将始终为字符串形式。
我们将此更改作为次要版本发布,仅作为警告,即:
-
如果您之前使用时间戳并期望特定响应,则行为现在将发生更改。在映射到驱动程序时,我们对于带有时区和不带时区的时间戳将始终使用 `.toISOString`。
-
如果您在 Drizzle 外部使用 `postgres.js` 驱动程序,则所有传递给 Drizzle 的 `postgres.js` 客户端的日期行为都将发生变异。响应中所有日期都将是字符串形式。
为 `postgres.js` 更改的解析器。
const transparentParser = (val: any) => val;
// Override postgres.js default date parsers: 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 的入门文档,请点击此处查看