新闻详情

新闻详情

首页 / 资讯中心 / 详情

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

发布时间:2026/9/30 9:00:05来源:尧图网络
用 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),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Chrome密码保存失效的底层机制与跨平台修复指南 2026/9/30 9:00:01

Chrome密码保存失效的底层机制与跨平台修复指南

1. 问题本质与真实场景还原:这不是“记不住”,而是密码管理机制被意外切断你点开 Chrome,输入常用网站的账号密码,勾选“保存密码”,页面刷新后再次进入——密码框空空如也。你打开chrome://settings/passwords&#x…

阅读更多 →
字节跳动职位分析:安全产品流程策略运营-国际化 2026/9/30 9:00:01

字节跳动职位分析:安全产品流程策略运营-国际化

一、职位定位与整体解读该职位属于字节跳动安全业务线下的「流程策略运营」方向,聚焦搜索与交互安全项目,面向国际化场景。核心职责不是单纯执行审核,而是通过流程设计、数据分析、指标体系和跨团队协作,持续提升内容质量与项目交…

阅读更多 →
ComfyUI低显存视频分镜:Qwen-VL提示词反推实战 2026/9/30 9:00:01

ComfyUI低显存视频分镜:Qwen-VL提示词反推实战

1. 项目概述:这不是“一键生成”,而是显存受限场景下的视频语义逆向工程你有没有试过把一段3分钟的短视频丢进ComfyUI做分镜分析,结果刚跑两帧就弹出“CUDA out of memory”?我去年在给一个独立动画工作室做AI辅助分镜时&#xff…

阅读更多 →
Java IO知识体系全梳理:从BIO、NIO到零拷贝与Netty实战 2026/9/30 9:00:01

Java IO知识体系全梳理:从BIO、NIO到零拷贝与Netty实战

刚毕业那会儿,我在第一个项目组接到一个报表导出需求:后台生成几十MB的CSV文件,前端再通过HTTP接口往下拉。当时用户量一上来,线上服务CPU直接飙到99%,线程数炸了,日志里全是FileNotFoundException和Socket…

阅读更多 →
吃透计算机概述PDF:硬件软件网络三层与高频故障排查 2026/9/30 9:00:01

吃透计算机概述PDF:硬件软件网络三层与高频故障排查

简介:计算机概述-计算机基础知识.pdf是一份面向计算机初学者、高校学生及备考人员的入门级PDF教材,系统梳理计算机基础知识的核心框架。资源共1个PDF文件,文件大小11.14MB,排版清晰、结构完整,便于直接阅读、打印或作为…

阅读更多 →
电力系统暂态能量函数法:理论、实现与工程避坑 2026/9/30 8:59:54

电力系统暂态能量函数法:理论、实现与工程避坑

简介:电力系统暂态能量函数法暂态稳定分析学习教案PPT,面向电力系统专业高年级本科生、研究生及电网稳定分析技术人员,系统讲解基于暂态能量函数的稳定分析原理与应用方法。资源包内含1个PPT课件,约1.23MB,便于直接用于…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉