定制 Prisma Client 以满足您的代码库需求
在 4.7.0 版本中,我们发布了 Prisma Client 扩展作为预览功能。今天我们很高兴地宣布 Prisma Client 扩展全面可用!在预览期间,扩展已被证明极其有用和强大,甚至为 Prisma 产品如 Accelerate 和 Optimize 提供了支持!
一个直接且易于使用的 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 时事通讯