定制 Prisma Client 以满足您代码库的需求
在 4.7.0 中,我们发布了 Prisma Client 扩展作为预览功能。今天,我们很高兴宣布 Prisma Client 扩展正式发布!在预览期间,扩展已被证明非常有用和强大,甚至为 Prisma 产品(如 Accelerate 和 Pulse!)提供支持!
一个直接且易于使用的 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 新闻通讯