根据您的代码库需求定制 Prisma Client
在 4.7.0 版本中,我们将 Prisma Client 扩展作为一个预览功能发布。今天,我们很高兴地宣布 Prisma Client 扩展正式可用(General Availability)!在预览期间,扩展已被证明非常有用和强大,甚至为 Accelerate 和 Optimize 等 Prisma 产品提供了支持!
一个直接且易于使用的 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 | 对传递给 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 新闻简报