定制 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添加可重用过滤器,可组合成模型的复杂 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 新闻通讯