DrizzleORM v0.30.0 发布
Mar 7, 2024
重大变更
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 中与我们联系!
更多关于带时区和不带时区的时间戳的参考,请参阅我们的 docs。
查看文档了解如何开始使用 postgres.js
驱动程序和 Drizzle 此处