首页/新闻资讯/正文详情

用 TypeGraphQL 集成 Prisma:从 schema.prisma 自动生成类型类与 CRUD Resolver

发布时间:2026/9/27 12:30:25 来源:云帆数科 栏目:资讯中心
用 TypeGraphQL 集成 Prisma:从 schema.prisma 自动生成类型类与 CRUD Resolver
后端GraphQLAPI设计【免费下载链接】type-graphqlCreate GraphQL schema and resolvers with TypeScript, using classes and decorators!项目地址https://gitcode.com/gh_mirrors/ty/type-graphql点击查看免费下载导读TypeGraphQL 提供了一条与 Prisma 深度集成的路径通过官方配套的typegraphql-prisma生成器可以直接基于schema.prisma自动产出 TypeGraphQL 所需的类型类与 CRUD Resolver从而在几行代码内让 GraphQL 查询/变更直达真实数据库无需手写任何解析逻辑。读完本文你将掌握如何在 Prisma schema 中声明typegraphqlgenerator、如何用prisma generate生成可导入的 resolver 集合、如何通过buildSchema将这些 resolver 接入 TypeGraphQL schema以及如何规避自动校验对生成代码的影响。本文以 docs/prisma.mdv1.0.0 版本文档见 website/versioned_docs/version-1.0.0/prisma.md为骨架展开。Prisma 集成是什么TypeGraphQL 本身负责用 TypeScript 类与装饰器创建 GraphQL schema 与 resolver见 项目 README。而 Prisma 是主流的 TypeScript ORM两者结合后typegraphql-prisma包会基于 Prisma schema 自动生成类型类与 Prisma 数据模型一一对应的ObjectType类以及配套的InputType输入类如 where、orderBy、create、update 等 CRUD 输入结构CRUD Resolver对应 Prisma 内置动作findMany、findUnique、create、update、delete等的 Query/Mutation resolver 类。于是复杂的查询或变更可以直接映射为 Prisma action 执行开发阶段几乎不需要为常规 CRUD 编写任何代码——这正是该集成最大的价值所在把数据层模型定义与GraphQL API 暴露之间的样板代码压缩到极致。快速开始三步接入第一步在 schema.prisma 中声明生成器在schema.prisma文件顶部新增一个typegraphqlgenerator 块generator typegraphql { provider typegraphql-prisma }与 Prisma 自带的prisma-client-js生成器类似这里通过provider指定由typegraphql-prisma负责代码生成。这样 Prisma CLI 就会在prisma generate时同时产出 TypeGraphQL 所需的代码默认输出到node_modules/generated/type-graphql。第二步运行 prisma generate执行npx prisma generate生成完成后代码会出现在generated/type-graphql目录中内部包含每个 Prisma 模型对应的类型类、输入类与 resolver 类。第三步在 buildSchema 中装载生成的 resolvers在应用启动入口中导入生成的 resolver 数组并传给buildSchemaimport { resolvers } from generated/type-graphql; const schema await buildSchema({ resolvers, validate: false, });buildSchema是 TypeGraphQL 的核心入口实现见 src/utils/buildSchema.ts它接收一个非空的 resolver 类数组并交给SchemaGenerator.generateFromMetadata生成可执行 schema。这里把生成的resolvers数组整体传入schema 中便会自动包含所有模型的 CRUD Query 与 Mutation。为什么示例中要设置 validate: falsetypegraphql-prisma生成的输入类为全部可选形态Prisma 的 where/create/update 输入天然如此而 TypeGraphQL 默认开启class-validator自动校验会导致生成代码在运行时报出大量校验错误。因此官方示例明确关闭validate: false,从源码看validate选项定义在 src/schema/build-context.ts类型为ValidateSettings boolean | ValidatorOptions会作为全局校验开关传入 src/resolvers/create.ts 等执行链路并在 src/resolvers/validate-arg.ts 中真正执行class-validator的validateOrReject。当validate false时validate-arg.ts 会直接短路返回不触发校验。如果确实需要校验也可以把validate设为true或传入ValidatorOptions对象或者按参数粒度在Arg()/Args()装饰器中单独开启参见 docs/validation.md。但配合 Prisma 生成代码时最省心的做法就是像官方示例一样先validate: false。一个真实可执行的查询示例schema 构建完成后客户端即可发送如下复杂查询——它直接与真实数据库交互涵盖筛选、排序、嵌套分页query GetSomeUsers { users(where: { email: { contains: prisma } }, orderBy: { name: desc }) { id name email posts(take: 10, orderBy: { updatedAt: desc }) { published title content } } }这段查询演示了生成 resolver 的能力边界where参数支持 Prisma 的过滤语法如contains模糊匹配由生成的UserWhereInput输入类承载orderBy支持按字段排序对应生成的UserOrderByWithRelationInput关联模型posts直接作为嵌套字段暴露且支持take分页与排序——在纯手写的 resolver 中这些逻辑通常需要逐个手写字段解析器而这里全部由生成代码完成。与手写 resolver的对比作为对照在仓库的 examples/typeorm-basic-usage 示例中同样的场景需要手写 resolver 类与Query/Mutation方法见 recipe.resolver.ts每个 Query 都要手动调用 repository 并映射参数。而在 Prisma 集成模式下这一层代码被完全自动化你只需要专注于业务扩展自定义 Query、额外字段等。生成代码之外如何继续扩展官方集成并不要求你止步于生成的 CRUD。typegraphql-prisma的完整功能集还包括暴露选定的 Prisma 动作通过 generator 配置只生成部分 action如仅findMany避免不需要的 Mutation 暴露到公网 API修改暴露的模型类型名为生成的 ObjectType 重命名避免与你的业务类型命名冲突编写自定义 Query将生成的部分类型类作为基础在自定义 resolver 中组合使用为模型类型增加字段借助FieldResolver与生成类型类为模型补充派生字段。这些进阶特性的完整文档与配套示例官方统一维护在专门的typegraphql-prisma文档站点上文档内部链接见 docs/prisma.md其中也包含安装细节与配置项说明可作为继续深入的首选资料。实践要点小结生成器声明在schema.prisma中加入generator typegraphql { provider typegraphql-prisma }生成与导入执行npx prisma generate从generated/type-graphql导入resolvers装配 schema将resolvers传入buildSchema并配合validate: false规避生成输入类的校验干扰查询即用生成的 Query/Mutation 完整支持where、orderBy、嵌套关联与分页几分钟内即可完成从 Prisma schema 到可用 GraphQL API 的落地进阶扩展通过 generator 配置裁剪动作、重命名类型或用自定义 resolver 补充业务逻辑。整个过程中你几乎不需要写 CRUD 代码这正是 TypeGraphQL Prisma 集成带给开发者的核心收益schema 定义即 API数据模型即类型系统。赞分享后端GraphQLAPI设计【免费下载链接】type-graphqlCreate GraphQL schema and resolvers with TypeScript, using classes and decorators!项目地址https://gitcode.com/gh_mirrors/ty/type-graphql点击查看免费下载相关推荐Television主题定制完全手册从Catppuccin到Gruvbox深度适配Television主题定制完全手册从Catppuccin到Gruvbox深度适配 Television是一款跨平台、快速且可扩展的通用模糊查找TUI工具它开发工具TypeGraphQL 与 Prisma 集成实战借助 typegraphql-prisma 自动生成 CRUD ResolversTypeGraphQL 与 Prisma 集成实战借助 typegraphql prisma 自动生成 CRUD Resolvers TypeGraphQL后端GraphQLAPI设计TypeGraphQL类型文档自动化CI/CD集成文档生成TypeGraphQL类型文档自动化CI/CD集成文档生成 你是否还在手动维护GraphQL Schema文档当API频繁迭代时手写文档不仅耗时还容易出错后端GraphQLAPI设计上一篇ScyllaDB Nodetool removenode 完全指南永久下线节点的删除、并发迁移与故障处理下一篇active project创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

建设网站有什么好处?被黑挂马后怎么选技术栈才不踩坑
建设网站有什么好处?被黑挂马后怎么选技术栈才不踩坑

建设网站有什么好处?被黑挂马后怎么选技术栈才不踩坑 上周三凌晨两点,老张的微信炸了。他做五金配件的外贸站突然挂满非法博彩链接,Google Search Console… · 2026/9/27 12:30:25

不会代码做网站?2026济南专业网站建设咨询3步选对技术栈
不会代码做网站?2026济南专业网站建设咨询3步选对技术栈

不会代码做网站?2026济南专业网站建设咨询3步选对技术栈 自己不会代码想做网站,别慌。很多老板第一步就错了,盲目找外包或者自己硬啃HTML。2026年的建站环境,技术选型直接决定你后期的SEO成本和运维难度。在济南找专业网站建设咨询,核心… · 2026/9/27 12:30:24

机房监控大屏TCP/SNMP双协议RJ45温湿度设备选型与对接实操
机房监控大屏TCP/SNMP双协议RJ45温湿度设备选型与对接实操

1. 机房监控大屏系统适配方案:TCP/SNMP双协议RJ45温湿度设备选型机房监控大屏这个需求,这两年我接到的咨询越来越多。不管是企业自建的小型数据中心,还是园区级的边缘机房,大家都有一个共同的痛点:大屏上要实时显示温湿… · 2026/9/27 12:30:18

做的网站百度排名没有图片显示最佳实践避坑指南
做的网站百度排名没有图片显示最佳实践避坑指南

做的网站百度排名没有图片显示最佳实践避坑指南 自己不会代码想做网站,结果上线后百度搜索里全是“图裂”或者干脆没图?别急,这根本不是玄学,而是技术配置没到位。很多设计师转前端的朋友,或者想搞官网的老板,最头疼的就是这个:本地看挺好,一上线百度… · 2026/9/27 13:16:14

避坑指南:软件下载网站怎么做完整流程才不拖工期
避坑指南:软件下载网站怎么做完整流程才不拖工期

避坑指南:软件下载网站怎么做完整流程才不拖工期 改个需求建站公司拖一周,这种憋屈事儿你是不是也遇过?明明只是换个图标、调下字体,对方却以“排期满了”为由让你再等三天。做网站最怕的就是这种黑盒操作,你看不见进度,只能干等。其实,软件下载网站怎… · 2026/9/27 13:16:14

微信域名防封跳转系统速查手册:避开高价坑的实操指南
微信域名防封跳转系统速查手册:避开高价坑的实操指南

微信域名防封跳转系统速查手册:避开高价坑的实操指南 找建站公司,最怕听到“这个得加钱”或者“这个技术很复杂,要定制开发”。尤其是涉及微信生态里的域名防封跳转系统,很多甲方对接人一开口问价,对方张口就是几千块起步,还告诉你这是“核心技术”。别… · 2026/9/27 13:16:07

网站设计与建设课后题答案汇总:别被坑,建站到底多少钱
网站设计与建设课后题答案汇总:别被坑,建站到底多少钱

网站设计与建设课后题答案汇总:别被坑,建站到底多少钱 模板网站太丑不够用?这是无数企业老板和运营人员的噩梦。花了几千块买个模板,上线后客户一眼看穿廉价感,转化率直接跳水。更扎心的是,很多所谓的“专家”拿着《网站设计与建设》的课后题答案忽悠人… · 2026/9/27 13:16:01

为实时音视频处理构建高性能、零碎片的处理流水线:TaoToken 统一 Key 接入与 config.toml 骨架
为实时音视频处理构建高性能、零碎片的处理流水线:TaoToken 统一 Key 接入与 config.toml 骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 13:15:55

此案例中采用了什么样的网络营销方式:3步拆解完整流程
此案例中采用了什么样的网络营销方式:3步拆解完整流程

此案例中采用了什么样的网络营销方式:3步拆解完整流程 网站做好了没人访问,这才是最让人头疼的事。很多老板花几万块做了个漂亮的官网,上线半年,后台数据一片惨淡,连个咨询电话都没有。这时候问乙方,他们往往两手一摊,说“这是运营的事,不是建站的事… · 2026/9/27 13:15:37

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码