2023年6月22日

Prisma Client 扩展现已正式发布

随着 Prisma ORM 4.16.0 版本的发布,客户端扩展现已全面可用!这项新功能允许用户扩展和自定义 Prisma Client,以满足其个性化用例。

Prisma Client Extensions

定制 Prisma Client 以满足您的代码库需求

4.7.0 版本中,我们发布了 Prisma Client 扩展作为预览功能。今天我们很高兴地宣布 Prisma Client 扩展全面可用!在预览期间,扩展已被证明极其有用和强大,甚至为 Prisma 产品如 AccelerateOptimize 提供了支持!

一个直接且易于使用的 API

如果这是您第一次听说客户端扩展,请不要担心。我们有一篇现有的博客文章深入介绍了其用法。总结一下:创建扩展就像使用 $extends 一样简单。

此代码片段展示了如何使用model 扩展向 User 模型添加新方法

如果您需要在所有模型上使用某个方法,甚至可以使用内置的 $allModels 功能

有关此版本中我们对扩展 API 所做更改的更深入了解,请查看我们的发布说明

社区构建的扩展

虽然客户端扩展现已全面可用,但我们已经看到了一些很棒的实际应用示例。prisma-extension-pagination 是社区的一个出色贡献。导入和使用外部客户端扩展也很简单

各种用例的参考示例

除了社区贡献之外,我们在 prisma-client-extensions 示例仓库中提供了一系列参考示例,展示了我们认为 Prisma Client 扩展可以发挥作用的不同领域。该仓库目前包含以下示例扩展:

示例说明audit-log-context提供当前用户 ID 作为 Postgres 审计日志触发器的上下文callback-free-itx添加一个无需回调即可启动交互式事务的方法computed-fields向结果对象添加虚拟/计算字段input-transformation转换传递给 Prisma Client 查询的输入参数以过滤结果集input-validation对传递给修改方法的输入参数运行自定义验证逻辑instance-methods向结果对象添加类似 Active Record 的方法,例如 save()delete()json-field-types对存储在 JSON 列中的数据使用强类型运行时解析model-filters添加可重用的过滤器,可以组合成模型的复杂查询条件obfuscated-fields防止敏感数据(例如密码字段)包含在结果中query-logging使用简单的查询计时和日志记录封装 Prisma Client 查询readonly-client创建一个只允许读取操作的客户端retry-transactions为事务添加重试机制,并带有指数退避和抖动row-level-security使用 Postgres 行级安全策略来隔离多租户应用程序的数据static-methods向 Prisma Client 模型添加自定义查询方法transformed-fields演示如何使用结果扩展来转换查询结果并为应用程序添加国际化exists-fn演示如何为所有模型添加 exists 方法

展示您的扩展!

如果您想更深入地了解 Prisma Client 扩展,请务必查看我们之前的文章:《Prisma Client 变得更加灵活:Prisma Client 扩展》!

我们也乐于听取您对扩展的看法(甚至可以尝试一下)。

务必在我们的 Discord 中展示您的 #MadeWithPrisma 作品

不要错过下一篇文章!

订阅 Prisma 时事通讯

© . All rights reserved.