2023 年 6 月 22 日

Prisma Client 扩展现已正式生产就绪

随着 Prisma ORM 4.16.0 版本的发布,Client 扩展 现已正式发布!这项新功能允许用户扩展和自定义 Prisma Client 以满足其各自的用例。

Prisma Client Extensions

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

4.7.0 中,我们发布了 Prisma Client 扩展作为预览功能。今天,我们很高兴宣布 Prisma Client 扩展正式发布!在预览期间,扩展已被证明非常有用和强大,甚至为 Prisma 产品(如 AcceleratePulse!)提供支持!

一个直接且易于使用的 API

如果这是您第一次听说 Client 扩展,请不要担心。我们有一篇现有的博客文章,其中深入介绍了用法。在这里总结一下:创建一个扩展就像使用 $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对传递给 mutation 方法的输入参数运行自定义验证逻辑
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演示如何使用结果扩展来转换查询结果并将 i18n 添加到应用程序
exists-fn演示如何向所有模型添加 exists 方法

展示您的扩展!

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

我们也希望听到您关于扩展的信息(甚至可能试用一下)。

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

不要错过下一篇文章!

注册 Prisma 新闻通讯