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添加可重用过滤器,可组合成模型的复杂 where 条件obfuscated-fields防止敏感数据(例如密码字段)包含在结果中query-logging使用简单的查询计时和日志记录包装 Prisma Client 查询readonly-client创建一个只允许读取操作的客户端retry-transactions向具有指数退避和抖动的事务添加重试机制row-level-security使用 Postgres 行级安全策略隔离多租户应用程序的数据static-methods向 Prisma Client 模型添加自定义查询方法transformed-fields演示如何使用结果扩展来转换查询结果并为应用程序添加 i18nexists-fn演示如何为所有模型添加 exists 方法

展示您的扩展!

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

我们也很乐意听取您对扩展的意见(甚至可以试用它们)。

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

不要错过下一篇文章!

订阅 Prisma 新闻通讯

© . This site is unofficial and not affiliated with Prisma Data, Inc.