后端GraphQLAPI设计【免费下载链接】type-graphqlCreate GraphQL schema and resolvers with TypeScript, using classes and decorators!项目地址https://gitcode.com/gh_mirrors/ty/type-graphql点击查看免费下载TypeGraphQL 官方提供了与 Prisma ORM 的深度集成方案通过独立的typegraphql-prisma生成器直接从schema.prisma数据模型生成 TypeScript 类型类与完整 CRUD resolvers让开发者无需手写任何 GraphQL 查询/变更代码即可对真实数据库执行复杂操作。本文围绕 docs/prisma.md 展开介绍接入步骤、schema 构建方式、可执行的复杂 GraphQL 查询形态并结合本仓库 src/utils/buildSchema.ts、src/schema/schema-generator.ts 等源码说明生成代码如何被 TypeGraphQL 的元数据体系接管帮助读者快速落地一套基于 Prisma 的 GraphQL API。集成概述从 Prisma Schema 到 GraphQL APITypeGraphQL 通过 npm 上的typegraphql-prisma包 提供 Prisma 集成。其核心工作方式与手写装饰器 resolver的传统路线完全不同输入是 Prisma Schema以schema.prisma中定义的数据模型model为唯一事实来源输出是类型类与 CRUD resolvers生成器为每个模型产出对应的 GraphQL 类型类object type 类以及覆盖查询、变更、订阅的 resolver 类零手写代码这些生成代码直接对应 Prisma 的底层 action如findMany、create、update、delete等所以不需要为 CRUD 编写任何业务逻辑代码即可通过 GraphQL 协议对真实数据库执行复杂查询或变更。换句话说集成后TypeGraphQL 负责构建 schema、执行 resolver 链路而Prisma 负责实际数据库访问两者通过typegraphql-prisma生成的桥接代码衔接。接入步骤为 schema.prisma 添加生成器使用该集成首先需要在schema.prisma文件中新增一个生成器generator块generator typegraphql { provider typegraphql-prisma }这里的关键点在于provider指定为typegraphql-prisma即从 npm 安装的 Prisma 生成器包生成器名称typegraphql可以自定义但provider必须与安装的包名一致与 Prisma 内置的prisma-client-js生成器可以共存即在同一个schema.prisma中同时声明多个 generator 块分别产出 Prisma Client 与 TypeGraphQL 类型/resolver。随后运行 Prisma 官方 CLI 命令完成代码生成prisma generate执行后生成器会在约定的输出位置默认generated/type-graphql命名空间产出类型类与 resolver 类。用生成的 resolvers 构建 schema生成完成后即可导入生成的 resolver 类并交给 TypeGraphQL 的buildSchema来组装 GraphQL schemaimport { resolvers } from generated/type-graphql; const schema await buildSchema({ resolvers, validate: false, });针对这段配置结合本仓库源码可以做如下解读resolvers必须是类数组buildSchema要求传入非空 resolver 数组见 src/utils/buildSchema.ts 中BuildSchemaOptions的类型定义底层会校验resolvers.length 0时直接抛出错误typegraphql-prisma导出的resolvers数组正是由一批标注了Resolver、Query、Mutation装饰器的类构成因此可以直接被 src/schema/schema-generator.ts 的generateFromMetadata读取元数据并构建根查询、根变更类型。validate: false的作用TypeGraphQL 默认会尝试启用class-validator自动校验注入到参数中的对象相关配置项定义见 src/schema/build-context.ts。当不依赖 class-validator、或生成代码未附带校验装饰器时显式关闭可避免加载不必要的校验逻辑底层采用动态导入方式按需加载class-validator见 src/resolvers/validate-arg.ts同时也能提升 schema 构建效率。buildSchema与buildSchemaSync本仓库同时提供异步与同步两个构建入口见 src/utils/buildSchema.ts生产环境推荐异步版本如需在构建时同步落盘schema.graphql还可通过emitSchemaFile选项指定输出路径。一步到位的复杂查询示例集成完成后无需编写任何 resolver 方法就能直接执行带过滤、排序、嵌套关联查询的复杂 GraphQL 查询且查询会真实地打到数据库上query GetSomeUsers { users(where: { email: { contains: prisma } }, orderBy: { name: desc }) { id name email posts(take: 10, orderBy: { updatedAt: desc }) { published title content } } }这段查询体现了typegraphql-prisma生成能力的几个典型特征where过滤email: { contains: prisma }对应 Prisma 的字符串过滤操作符生成器会为每个模型类型展开完整的WhereInput输入类型orderBy排序orderBy: { name: desc }支持按字段升降序排列关联嵌套查询users返回的posts字段是模型间的关系字段可以直接带上take、orderBy等参数做分页与排序这得益于生成器为关系字段自动产出了对应的 resolver 字段与参数类型安全与自动补全由于所有类型类都是根据 Prisma 模型生成的客户端在编写这类查询参数时能获得完整的 IntelliSense 提示。从底层机制看users这类根查询会被typegraphql-prisma以Query装饰器标注到生成的 resolver 类上构建 schema 时 src/schema/schema-generator.ts 会从元数据存储中过滤出与传入 resolvers 匹配的 query/mutation 处理器组装成 GraphQL 根对象类型。深入挖掘定制能力与更多文档typegraphql-prisma的功能远不止基础 CRUD原文档指出其还支持以下高级能力暴露选定的 Prisma action可以在schema.prisma的 generator 块中通过配置如output、exposeWhere、exposeQueries、exposeMutations等选项精确控制哪些 action 暴露到 GraphQL 层避免把全部 CRUD 无条件开放出去修改暴露的模型类型名对生成的 GraphQL 类型名称进行重命名/映射避免与前缀、命名空间或既有类型冲突编写自定义查询生成的类型类可以像普通 TypeGraphQL 类型一样被复用开发者可以手写带Resolver、Query装饰器的自定义 resolver 类在方法内注入 Prisma Client 执行更复杂的业务查询为模型类型添加额外字段通过继承生成类型并叠加Field装饰器的方式或使用生成器提供的扩展机制在不改 Prisma Schema 的前提下为 GraphQL 类型补充计算字段。关于这些特性的完整说明、安装与配置细节以及更多可运行示例请查阅 typegraphql-prisma 的专门文档站点原文档中提供的 prisma.typegraphql.comschema 组装逻辑见 src/schema/schema-generator.ts构建入口与选项定义见 src/utils/buildSchema.ts。适用场景与使用提示快速原型与 CRUD 密集型项目当业务以数据模型的增删改查为主、且查询形态契合 Prisma 的过滤/排序/分页语义时该集成能在几分钟内交付可查询真实数据库的 GraphQL API原文档原话为in just a few minutes。与手写 resolver 混用生成的 resolvers 不是封闭的可以只把resolvers数组中的部分类加入buildSchema其余业务逻辑用手写 resolver 类补齐实现生成与定制并存。注意版本配套typegraphql-prisma的生成产物依赖与本仓库 TypeGraphQL 版本的兼容性接入前应确认生成器版本与 TypeGraphQL 运行时版本匹配并按官方文档完成安装步骤。schema 输出辅助若希望把生成的 SDL 落到文件中便于客户端代码生成可在buildSchema中启用emitSchemaFile选项默认输出到./schema.graphql参见 src/utils/buildSchema.ts。综上所述TypeGraphQL 与 Prisma 的集成将数据模型定义 → GraphQL 类型 → CRUD resolver这条链路彻底自动化开发者只需维护schema.prisma运行一次prisma generate再以生成的 resolvers 调用buildSchema即可获得一个可执行复杂数据库查询的完整 GraphQL 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工具它开发工具5大策略如何构建下一代AI安全防御体系5大策略如何构建下一代AI安全防御体系 在生成式AI技术快速发展的今天大型语言模型的安全漏洞已成为企业数字化转型中的关键风险点。AI安全防护不再仅仅是技术问人工智能大模型模型评测红蓝对抗提示词注入防护模型安全AI 安全治理WiFi-DensePose与物联网打造智能空间的无限可能WiFi DensePose与物联网打造智能空间的无限可能 WiFi DensePose是一款革命性的基于WiFi的密集人体姿态估计系统它能够通过普通的Me人工智能计算机视觉物联网智能家居后端嵌入式上一篇CANN/metadef获取内存大小下一篇WSA装不上从报错到跑通的完整排障手册创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
从零自建轻量级CRM系统:技术选型、数据模型与权限实战 1. 为什么做DeskcommCRM:免费公共CRM与私有自建的本质差异先说明一下DeskcommCRM是什么。它是我们团队内部从零搭起来的一套轻量客户关系管理系统,名字里的Deskcomm可以理解为“桌面沟通”,核心定位是让销售和客服人员每天打开电脑就能看到该… · 2026/9/26 6:51:10
msado15.dll 32位与64位注册排查:从System32到SysWOW64 简介:压缩包内汇集了msado15.dll在32位与64位体系下的多版本ADO组件,适用于需要在Windows环境进行数据库编程的开发人员,解决因系统架构或版本不匹配导致的组件引用失败、功能缺失等问题。包内共194个文件,主体为96个DLL动态库与9… · 2026/9/26 6:51:10
泰迪杯车辆驾驶行为分析:GPS轨迹清洗与聚类建模全流程 简介:第七届泰迪杯数据挖掘竞赛“车辆驾驶行为分析”完整项目,含源码、文档说明与比赛总结,面向数据挖掘学习者、竞赛选手及车辆网联相关毕设学生。项目在常规驾驶行为分析基础上,引入省、市、县级温度、天气、湿度等环境数据&… · 2026/9/26 7:24:14
Neo4j知识图谱实战:从本体建模到Cypher查询与数据导入 简介:一套基于Neo4j图数据库开发的知识图谱项目,可作为毕业设计、课程设计或项目实践的完整参考。项目围绕知识图谱的构建与应用展开,整合了后端Java控制器、前端JavaScript与HTML页面、CSS样式布局,以及Neo4j数据库的db、neostor… · 2026/9/26 7:24:08
指纹浏览器原理拆解:沙箱隔离与指纹仿真如何实现防关联 2026 年,我依然经常被人问到同一个问题:指纹浏览器到底是不是“换个浏览器”那么简单?如果你做过跨境电商多店铺运营,或者在 RPA 自动化里需要同时管理多个平台账号,肯定有过这种体验:同一个浏览器开两个窗… · 2026/9/26 7:24:08
VMware安装卡在虚拟网络驱动?彻底解决与排查指南 1. 卡在“正在安装虚拟网络驱动程序”到底卡在了哪装 VMware Workstation 这件事,说简单也简单,一路下一步就完事;说坑也真坑,很多人第一次装就栽在同一个地方——进度条走到“正在安装虚拟网络驱动程序”这一步,然后就… · 2026/9/26 7:24:08
Word公式导入UEditor:前端解析OMML转MathML完整实践 最近有个实际项目把我折腾得够呛:客户那边一摞Word文档,里面全是带分数、根号、求和符号的复杂公式,要从前端导入到UEditor里展示。试了一圈发现,直接从Word复制粘贴,公式要么变成一串乱码,要么是低清图片&… · 2026/9/26 7:24:08
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍 简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践 一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46