使用 type-graphql 与 Prisma 集成:基于 Prisma Schema 自动生成类型类与 CRUD Resolver 的实战指南
后端GraphQLAPI设计【免费下载链接】type-graphqlCreate GraphQL schema and resolvers with TypeScript, using classes and decorators!项目地址https://gitcode.com/gh_mirrors/ty/type-graphql点击查看免费下载导读本文聚焦 type-graphql 项目中与 Prisma 的官方集成方案通过typegraphql-prisma包基于schema.prisma自动生成对应的 GraphQL 类型类与 CRUD resolver从而无需手写任何数据库查询代码即可对外暴露复杂的查询与变更接口。读完本文你将掌握在schema.prisma中注册 generator、执行prisma generate、导入生成产物并接入buildSchema的完整流程并能直接运行一个与真实数据库交互的嵌套过滤、排序与分页 GraphQL 查询。集成原理概述TypeGraphQL 的核心理念是用 TypeScript 的类与装饰器来声明 GraphQL Schema。在与 Prisma 集成时typegraphql-prisma包充当代码生成器的角色它读取 Prisma Schema 中定义的每个 model为它们生成对应的 TypeGraphQL 类型类ObjectType、InputType 等以及覆盖 CRUD 语义的 resolver 类对应 Prisma 的findMany、findUnique、create、update、delete等 action。这样做带来的直接收益是Schema 与数据库模型之间的冗余被消除开发者不需要手动维护两份类型定义也不需要为每个 model 手写一套重复的增删改查逻辑。生成后的 resolver 可以直接交给 TypeGraphQL 的buildSchema使用构建出完整的、可查询真实数据库的 GraphQL API。第一步在 schema.prisma 中注册生成器要启用集成首先需要在 Prisma 的schema.prisma文件中新增一个 generator 块将provider指定为typegraphql-prismagenerator typegraphql { provider typegraphql-prisma }这个 generator 块与 Prisma 自带的prisma-client-js或prisma-client生成器平级。provider指向 npm 包名Prisma CLI 在执行generate时会解析并加载该包来执行自定义代码生成逻辑。若生成器无法被解析通常需要确认typegraphql-prisma已作为依赖安装在项目中。第二步执行 prisma generate 生成类型类与 Resolver保存schema.prisma后在项目根目录执行prisma generatePrisma CLI 会读取 schema 中的全部 model、enum 与关系定义并输出到默认路径generated/type-graphql该路径可通过 generator 配置调整。生成产物中最重要的是一组 resolver 类集合以及配套的类型类、输入类、参数类与枚举它们全部遵循 TypeGraphQL 的装饰器规范可以被 TypeGraphQL 元数据系统直接识别。第三步用生成的 Resolver 构建 Schemaprisma generate完成后即可从生成目录导入 resolvers 集合并传给buildSchema构建 GraphQL Schemaimport { resolvers } from generated/type-graphql; const schema await buildSchema({ resolvers, validate: false, });这里有几个值得注意的要点结合仓库源码可以看得更清楚buildSchema是 TypeGraphQL 对外暴露的异步构建入口定义在 src/utils/buildSchema.ts它接收一个BuildSchemaOptions对象核心字段就是resolversresolver 类数组。在 src/utils/buildSchema.ts 中可以看到resolvers数组为空时会直接抛出Empty resolvers array property found in buildSchema options!因此传入生成的resolvers集合是构建成功的前提。validate: false用于关闭自动参数校验。TypeGraphQL 默认会在解析参数时执行基于class-validator的自动校验而typegraphql-prisma生成的输入类通常带有大量自动化的where/orderBy等嵌套输入类型开启默认校验可能带来不必要的性能开销或与生成代码的装饰器行为冲突因此官方示例中显式关闭。validate选项的类型为ValidateSettings见 src/schema/build-context.ts传入false即禁用校验也可以传入校验配置对象进行细粒度控制。若希望同时把构建出的 Schema SDL 落盘例如用于客户端代码生成或 Schema 回归快照还可以为buildSchema追加emitSchemaFile选项相关用法可参考 docs/emit-schema.md。至此一个连接真实数据库、覆盖全部 model 的 CRUD GraphQL API 就已就绪整个过程只需数分钟。运行效果一行复杂查询直达数据库构建完成后即可在 GraphiQL 等客户端直接发起嵌套过滤、排序与分页的复杂查询。官方示例查询如下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 的过滤条件这里按email字段执行contains包含匹配orderBy参数对应 Prisma 的排序语义按name降序排序嵌套关系查询users的结果中继续取关联的posts列表并再次应用take分页与orderBy排序。这些参数类型全部由typegraphql-prisma依据 Prisma model 与关系自动生成开发端无需编写任何 resolver 实现代码。进阶能力与更多参考typegraphql-prisma并不仅限于生成完整 CRUD它还支持丰富的定制能力典型包括选择性暴露 Prisma action可以通过生成器配置或装饰器选项只对外暴露指定的查询/变更例如仅findMany与create控制 API 面大小与安全边界调整对外暴露的 model 类型名改变生成的 GraphQL 类型名称避免与已有类型冲突或实现更友好的命名编写自定义 query在生成 resolver 的基础上追加手写的查询逻辑为 model 类型添加额外字段通过 TypeGraphQL 的字段装饰器为生成的类型补充自定义字段与生成代码共存。这些特性的完整说明、安装细节、配置项列表以及配套示例工程均收录在typegraphql-prisma的专属文档站点中是深度使用该集成时的主要参考来源。小结借助typegraphql-prismatype-graphql 用户可以把 Prisma Schema 作为唯一的模型事实来源一次prisma generate得到类型类与 CRUD resolver再通过buildSchema({ resolvers, validate: false })直接装配成可查询真实数据库的 GraphQL API。这套流程消除了 Schema 与 ORM 模型之间的重复维护是快速搭建数据驱动的 GraphQL 服务的高效路径。赞分享后端GraphQLAPI设计【免费下载链接】type-graphqlCreate GraphQL schema and resolvers with TypeScript, using classes and decorators!项目地址https://gitcode.com/gh_mirrors/ty/type-graphql点击查看免费下载相关推荐用 TypeGraphQL 集成 Prisma从 schema.prisma 自动生成类型类与 CRUD Resolver用 TypeGraphQL 集成 Prisma从 schema.prisma 自动生成类型类与 CRUD Resolver 导读 TypeGraphQL 提供后端GraphQLAPI设计Television主题定制完全手册从Catppuccin到Gruvbox深度适配Television主题定制完全手册从Catppuccin到Gruvbox深度适配 Television是一款跨平台、快速且可扩展的通用模糊查找TUI工具它开发工具Prisma Resolver Patterns基于 graphql-yoga 与 Prisma 的常见 Resolver 实战指南Prisma Resolver Patterns基于 graphql yoga 与 Prisma 的常见 Resolver 实战指南 本文围绕 Prisma后端数据库GraphQL上一篇Cilium Connectivity Check 全解析从 YAML 部署到 CUE 模板化生成机制下一篇OpenMetadata Metabase 仪表盘连接器配置指南连接参数、认证方式与血缘匹配详解创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

朋友帮忙做网站费用多少?3个维度教你怎么选不踩坑

朋友帮忙做网站费用多少?3个维度教你怎么选不踩坑

朋友帮忙做网站费用多少?3个维度教你怎么选不踩坑 别被“朋友帮忙”四个字骗了,模板网站太丑且功能僵化,根本不够用,这才是你纠结的核心。很多人以为找熟人写个页面就是友情价,结果上线后才发现,域名备案卡壳、服务器配置拉胯、SEO完全没做,最后还…

2026/9/28 3:57:04 阅读更多 →
小程序制作哪家做得好?零基础老板选开发公司避坑指南

小程序制作哪家做得好?零基础老板选开发公司避坑指南

2026/9/28 3:57:04 阅读更多 →
储能PACK热管理设计:电芯温度一致性怎么保证

储能PACK热管理设计:电芯温度一致性怎么保证

储能PACK的热管理核心目标是电芯温度一致性——电芯温差(ΔT)通常要求控制在5℃以内(严苛项目3℃以内)。保证一致性的手段按优先级:①液冷板流道设计(与电芯布局匹配,进液口均流)&am…

2026/9/28 3:57:04 阅读更多 →

最新新闻

需要注册的网站建设哪家好?避开3大安全坑

需要注册的网站建设哪家好?避开3大安全坑

需要注册的网站建设哪家好?避开3大安全坑 域名没备案,服务器被黑,网站打不开。 很多老板找 需要注册的网站建设 团队,只问价格快不快,却没人告诉他: 哪家好 的关键,不在设计多花哨,而在上线后会不会被拖库、被挂马、被DDoS打瘫。…

2026/9/28 4:37:25 阅读更多 →
291基于SpringBoot4+Vue3的球馆场地预约系统、运动场馆预约系统、运动场馆预约小程序;毕业设计、课程设计

291基于SpringBoot4+Vue3的球馆场地预约系统、运动场馆预约系统、运动场馆预约小程序;毕业设计、课程设计

✅博主简介:Java全栈开发工程师(bishecoder),精通Java开发、系统设计、项目实战。 ✅技术栈:SpringBoot、Vue、React、Node.js、Nest.js、uni-app等 ✅技术擅长:定制项目、修改代码、编写文档、技术指导等。…

2026/9/28 4:37:25 阅读更多 →
从 MySQL 的 LIKE 到 ES 倒排索引:一次把全文检索和混合检索讲透

从 MySQL 的 LIKE 到 ES 倒排索引:一次把全文检索和混合检索讲透

写在前面做后端的朋友大概率都遇到过这个场景:产品经理跑过来跟你说,“能不能给文章加个搜索功能?就按内容搜,跟百度那样。”你第一反应可能是:SELECT * FROM article WHERE content LIKE %关键词%;跑一下,…

2026/9/28 4:37:25 阅读更多 →
292基于SpringBoot4+Vue3的家装设计系统、家装设计网站、室内设计展示平台、装修需求管理系统;毕业设计、课程设计

292基于SpringBoot4+Vue3的家装设计系统、家装设计网站、室内设计展示平台、装修需求管理系统;毕业设计、课程设计

✅博主简介:Java全栈开发工程师(bishecoder),精通Java开发、系统设计、项目实战。 ✅技术栈:SpringBoot、Vue、React、Node.js、Nest.js、uni-app等 ✅技术擅长:定制项目、修改代码、编写文档、技术指导等。…

2026/9/28 4:37:25 阅读更多 →
Pyqt基于回归方法的单摄像头注视点估计模型与应用大数据专业毕业设计深度学习图像识别

Pyqt基于回归方法的单摄像头注视点估计模型与应用大数据专业毕业设计深度学习图像识别

✅源码获取: 🍅--------------------【点击左上方头像,在置顶文章上方的wx】联系我们-----------------🍅 ✌网站介绍:✌10年项目辅导经验、专注于计算机技术领域学生项目实战辅导。 ✌服务范围:大数据、机…

2026/9/28 4:37:25 阅读更多 →
华润集团智能制造数字化转型【附全文阅读】

华润集团智能制造数字化转型【附全文阅读】

本 87 页 PPT 为央企集团智能制造数字化转型实战参考材料,适配制造类数字化投标、转型规划编制及企业内训授课。对标国家智能制造相关政策,结合华润多元产业实践,输出一套转型方法论、参照标准以及十大发展方向,包含成熟度评价工具…

2026/9/28 4:36:25 阅读更多 →

日新闻

济南做网站多少钱:3个案例拆解,防黑源码下载全攻略

济南做网站多少钱:3个案例拆解,防黑源码下载全攻略

济南做网站多少钱:3个案例拆解,防黑源码下载全攻略 上周济南一个做建材的老板找我,脸都绿了。他的官网首页弹出了赌博广告,后台被植入了挖矿脚本。他慌得问我:“网站被黑挂马不知道怎么办?能不能直接找之前的外包公司要源码下载,看看哪里被动了手脚?…

2026/9/28 0:00:34 阅读更多 →
婚恋网站实战案例:避开3个高价坑,省钱50%还能跑赢流量

婚恋网站实战案例:避开3个高价坑,省钱50%还能跑赢流量

婚恋网站实战案例:避开3个高价坑,省钱50%还能跑赢流量 找婚恋网站建站公司,最怕的就是被坑高价。很多同行跟我吐槽,报价单上写得模棱两可,功能栏里全是“高级定制”、“专属UI”,结果落地全是套壳。今天不聊虚的,直接甩几个我经手的 实战案例…

2026/9/28 0:00:34 阅读更多 →
制作网页比较方便的软件怎么选?一文搞懂避坑指南

制作网页比较方便的软件怎么选?一文搞懂避坑指南

制作网页比较方便的软件怎么选?一文搞懂避坑指南 很多老板一上来就问:做个网站多少钱?但我反问他:你的域名买了吗?服务器租了吗?他一脸懵。这就是典型的“域名服务器搞不懂”。别急,今天咱们不聊虚的,直接 一文搞懂 那些让你头秃的技术名词。…

2026/9/28 0:00:34 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/27 0:00:34 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/27 0:00:34 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/27 0:00:34 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/27 9:12:14 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/28 3:51:11 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/26 22:52:30 阅读更多 →