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

如何将Prisma Schema转换为GraphQL Schema?避免重复编写

自动将Prisma Schema转换为GraphQL Schema的方案

核心思路:用Prisma生成器工具自动同步类型

无需手动编写GraphQL SDL,通过社区工具直接从Prisma Schema生成对应GraphQL类型,彻底规避类型不匹配和重复劳作的问题。

方案1:使用prisma-graphql-type-generator(直接生成SDL)

这是专门针对Prisma到GraphQL类型转换的工具,步骤简单直接:

  1. 安装依赖:
npm install prisma-graphql-type-generator --save-dev
  1. 在prisma/schema.prisma中添加生成器配置:
generator graphql {
  provider = "prisma-graphql-type-generator"
  output   = "../src/graphql/schemas/generated/" # 自定义生成文件的输出路径
}
  1. 执行生成命令:
prisma generate

执行后会自动在指定路径生成完整的GraphQL类型文件,自动完成类型映射(比如Prisma的Int @db.UnsignedInt转为BigInt!,DateTime转为String!)、关联关系转换(如author[]转为[Author]!),完全匹配你给出的示例格式。

方案2:结合GraphQL Code Generator(更灵活的自定义控制)

如果需要添加自定义GraphQL指令、调整字段映射规则,可搭配GraphQL Code Generator:

  1. 安装依赖:
npm install @graphql-codegen/cli @graphql-codegen/typescript @graphql-codegen/typescript-resolvers --save-dev
  1. 创建codegen.ts配置文件:
import type { CodegenConfig } from '@graphql-codegen/cli';

const config: CodegenConfig = {
  schema: './src/graphql/schemas/base.graphql', // 你的基础GraphQL骨架文件
  generates: {
    './src/graphql/generated/': {
      preset: 'client',
      plugins: [],
      config: {
        prismaClientPath: '@prisma/client', // 关联Prisma Client的类型定义
        useIndexSignature: true
      }
    }
  }
};

export default config;
  1. 定义一次基础GraphQL模型骨架后,执行同步命令:
npx graphql-codegen

这种方式既能保留自定义的GraphQL逻辑,又能自动同步Prisma Schema的类型变更。

关键注意事项

  • 每次修改Prisma Schema后,只需执行对应生成命令,即可自动更新GraphQL类型,无需手动修改。
  • 可通过生成器的配置项自定义类型映射,比如将特定Prisma类型转为自定义GraphQL标量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 07:42:41