如何在Prisma 2/3与Nexus Schema生成中同时获取自动CRUD与ondelete cascade能力
兼容自动CRUD与参照完整性的Nexus+Prisma版本组合及方案
你可以直接使用nexus-prisma@0.35.0 + @prisma/client@3.15.2 + prisma@3.15.2的版本组合,完全覆盖你的两个核心需求:
- 该版本的nexus-prisma已经将原prisma-nexus-plugin的experimentalCrud能力整合为稳定的内置CRUD生成功能,不再受旧版本2.23.0的Prisma版本限制,兼容Prisma 3.x全版本
- Prisma 3.x全版本都完整支持参照完整性、
onDelete cascade等关联级联操作配置,不需要额外做兼容处理
配置步骤
如果之前使用了旧版prisma-nexus-plugin,需要先卸载旧依赖,再安装上述版本的新依赖
- 第一步:安装对应版本依赖
npm install nexus-prisma@0.35.0 @prisma/client@3.15.2 npm install -D prisma@3.15.2
- 第二步:在
schema.prisma中配置生成器
generator nexusPrisma { provider = "nexus-prisma" } generator client { provider = "prisma-client-js" referentialIntegrity = "prisma" }
- 第三步:Nexus代码中直接调用生成的CRUD能力,无需手动编写解析器
import { objectType, queryType, mutationType } from 'nexus' import { User, Post } from '.prisma/nexus' const User = objectType({ name: 'User', definition(t) { t.field(User.id) t.field(User.name) t.field(User.posts) // 关联字段直接复用生成的定义,对应解析器自动生成 } }) const Query = queryType({ definition(t) { t.crud.user() t.crud.users() // 自动生成单查、列表查询能力,自带过滤、分页、排序逻辑 } }) const Mutation = mutationType({ definition(t) { t.crud.createOneUser() t.crud.updateOneUser() t.crud.deleteOneUser() // 自动生成增删改能力,原生适配Prisma的级联删除逻辑 } })
如果你不需要Nexus的高度自定义能力,还可以选择Prisma官方的GraphQL API生成工具,直接基于schema.prisma一键生成完整可用的GraphQL服务,连基础的类型定义代码都不需要手动编写。
内容的提问来源于stack exchange,提问作者dsmurl
相关产品推荐
相关产品推荐

