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

如何自动将Prisma模型转换为GraphQL模型?避免重复编写

基于Prisma Schema自动生成GraphQL模型的方案

1. 用Prisma官方GraphQL生成器(首推)

Prisma有官方维护的生成器工具,能直接从你的Schema一键生成对应的GraphQL类型、输入类型甚至Resolver骨架,完全不用手动重复写。

操作步骤:

  • 安装依赖:npm install --save-dev prisma-graphql-generator
  • 在prisma/schema.prisma里添加生成器配置:
generator graphql {
  provider = "prisma-graphql-generator"
  output   = "./generated/graphql" // 自定义生成文件的存放路径
}
  • 执行生成命令:npx prisma generate

针对你给出的companiesOnUsers模型,生成的GraphQL类型大概长这样:

type CompaniesOnUsers {
  company: Company!
  companyId: Int!
  user: User!
  userId: Int!
  role: CompanyRoles!
  roleId: Int!
  createdAt: DateTime!
  updatedAt: DateTime!
}

input CompaniesOnUsersCreateInput {
  company: CompanyCreateNestedOneWithoutCompaniesOnUsersInput!
  user: UserCreateNestedOneWithoutCompaniesOnUsersInput!
  role: CompanyRolesCreateNestedOneWithoutCompaniesOnUsersInput!
}

生成的Resolver模板也能直接复用,省掉大量重复编码工作。

2. Prisma Client + 手动定义GraphQL类型(适合需自定义场景)

如果需要对GraphQL类型做更灵活的定制,可以手动编写GraphQL类型,然后直接复用Prisma Client完成数据操作,不用重复编写数据库逻辑:

先定义GraphQL类型:

type CompaniesOnUsers {
  companyId: Int!
  userId: Int!
  roleId: Int!
  createdAt: String!
  updatedAt: String!
  company: Company!
  user: User!
  role: CompanyRoles!
}

type Query {
  getCompaniesOnUsers: [CompaniesOnUsers!]!
}

然后在Resolver里调用Prisma Client:

const resolvers = {
  Query: {
    getCompaniesOnUsers: async (_, __, { prisma }) => {
      return prisma.companiesOnUsers.findMany({
        include: { company: true, user: true, role: true }
      });
    }
  }
};

这种方式虽然要手动写GraphQL类型,但数据层逻辑完全依赖Prisma,不用重复造轮子。

3. 用GraphQL Code Generator工具同步

借助graphql-codegen工具和配套的Prisma插件,可以实现Prisma模型和GraphQL类型的双向同步,避免手动维护的重复劳动。

配置示例(新建codegen.yml):

schema: ./src/schema.graphql
generates:
  ./src/generated/graphql.ts:
    plugins:
      - typescript
      - typescript-resolvers
      - typescript-prisma
    config:
      prismaClientPath: '../prisma/client'

执行生成命令:npx graphql-codegen

工具会自动完成GraphQL类型与Prisma类型的映射,保持两者同步更新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 01:15:31