You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Prisma ORM中创建抽象模型以复用公共字段?

在Prisma中复用公共模型字段的方案

首先明确:Prisma目前没有原生支持模型继承/抽象基类的功能,官方文档也未提供这类特性。不过可以通过以下几种方式实现公共字段的复用,避免重复代码:

1. 使用编辑器代码片段快速插入公共字段

这是最直接的原生友好方案,借助编辑器的代码片段功能,把公共字段定义成可快速插入的模板:

以VS Code为例,创建Prisma专属的代码片段:

  1. 打开「设置」→「用户代码片段」,选择prisma.json
  2. 添加如下配置:
{
  "Base Model Audit Fields": {
    "prefix": "base-audit",
    "body": [
      "id         Int       @id @default(autoincrement())",
      "created_at DateTime  @default(now())",
      "updated_at DateTime  @updatedAt",
      "deletedAt  DateTime?"
    ],
    "description": "插入通用审计字段(ID、创建时间、更新时间、软删除时间)"
  }
}

之后编写Prisma模型时,输入base-audit就能自动插入所有公共字段,无需手动重复编写。

2. 脚本合并Schema片段

如果团队模型数量较多,可编写简单的Node脚本,将公共字段片段自动注入到各个模型文件中:

  • 把公共字段单独放在common-fields.prisma文件中
  • 编写脚本读取所有业务模型文件,将公共字段插入到每个模型的开头
  • 生成最终的schema.prisma文件供Prisma使用

这种方式能确保所有模型统一包含公共字段,避免新增模型时遗漏。

3. 生产环境管理大量模型的额外建议

  • 拆分Schema文件:将不同业务域的模型拆分到单独的.prisma文件中,再通过脚本合并成最终文件,提升可维护性
  • 制定规范+代码审查:明确要求所有模型必须包含指定的审计字段,配合代码审查环节确保执行
  • Prisma Client中间件:如果需要自动维护审计字段(比如确保updated_at始终更新),可以用Prisma Client中间件在运行时自动处理:
prisma.$use(async (params, next) => {
  if (params.action === 'update' || params.action === 'updateMany') {
    params.args.data.updated_at = new Date();
  }
  return next(params);
});

内容的提问来源于stack exchange,提问作者Ankush Chavan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 11:48:00