ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

如何在Blitz.js中使用Prisma:数据库建模、迁移与自动CRUD完整教程

2026/9/19 6:51:42 拓冰建站 浏览量
如何在Blitz.js中使用Prisma:数据库建模、迁移与自动CRUD完整教程 如何在Blitz.js中使用Prisma数据库建模、迁移与自动CRUD完整教程【免费下载链接】blitz⚡️ The Missing Fullstack Toolkit for Next.js项目地址: https://gitcode.com/gh_mirrors/bl/blitzBlitz.js 是专为 Next.js 打造的全栈开发工具包The Missing Fullstack Toolkit for Next.js它把 Prisma 作为官方数据库层深度集成进来——从数据库建模、Prisma 迁移migrate到自动 CRUD 接口一条命令流就能跑通。本教程面向新手带你从零走完「建模 → 迁移 → 自动 CRUD → 种子数据」的完整流程。一、为什么 Blitz.js 和 Prisma 是天生一对在 Blitz.js 项目里数据库工作被封装在独立的db/目录中开箱即用的结构如下以官方示例应用 apps/web/ 为例db/schema.prisma数据模型定义Prisma Schemadb/index.ts全局 Prisma 客户端入口db/seeds.ts种子数据脚本可选Blitz 对 Prisma 做了两层增强客户端增强enhancePrisma会包装PrismaClient保证服务端全局单例并额外提供db.$reset()方法一键重置开发数据库生产环境会自动拦截防止误删数据。核心实现见 packages/blitz/src/utils/enhance-prisma.tsCLI 命令透传所有 Prisma 命令都可以用blitz prisma 子命令调用实现见 packages/blitz/src/cli/commands/prisma.ts二、快速创建应用一条命令生成数据库骨架全局安装 CLI 后用以下命令创建新应用npm install -g blitz blitz new my-app cd my-app blitz devblitz new会自动生成db/schema.prisma默认使用 SQLite零配置、迁移目录db/migrations/和示例种子脚本你可以直接在 packages/generator/templates/app/db/ 查看官方模板生成的初始数据库文件。打开 apps/web/db/schema.prisma 看看默认模型的样子datasource声明数据库类型与连接地址generator client声明生成 Prisma Clientmodel User定义了id、email唯一约束、hashedPassword、role等字段并通过relation关联Session与Token表 提示默认 SQLite 方便本地开发上线建议切换 Postgres官方模板中也有说明见 apps/toolkit-app/db/schema.prisma 末尾的注释。三、数据库建模3 分钟读懂 schema.prismaPrisma Schema 采用模型即表、字段即列的直观语法。以 apps/web/db/schema.prisma 中的User模型为例几个新手常问的点写法含义id default(autoincrement())主键 自增unique唯一索引如邮箱String?可空字段default(user)字段默认值sessions Session[]一对多关系声明unique([hashedToken, type])复合唯一约束手动建模直接编辑db/schema.prisma然后运行迁移见下一节。自动建模更推荐用代码生成器一条命令即可把模型写入 schema 文件blitz generate model Post title:String body:String? published:Boolean生成器会解析字段参数、把新模型追加到 schema并在完成后询问你是否立即执行prisma migrate dev——整个流程实现在 packages/generator/src/generators/model-generator.ts。四、执行迁移把模型同步到数据库Blitz 把 Prisma 迁移命令统一收口到blitz prisma下blitz prisma migrate dev --name init这条命令会① 生成迁移 SQL 到db/migrations/② 更新本地数据库结构③ 重新生成 Prisma Client。以 integration-tests/auth/db/migrations/ 目录为例每次迁移都会形成一个带时间戳的独立子目录便于版本追溯。其他常用命令速查blitz prisma generate—— 重新生成 Prisma Client改了 schema 后必跑blitz prisma format—— 格式化 schema 文件blitz prisma studio—— 可视化查看/编辑数据blitz db seed—— 运行种子数据实现见 packages/blitz/src/cli/commands/db.ts五、接入 db 并编写 CRUD 接口Blitz 的 RPC 架构下数据库操作都写在src/queries/读和src/mutations/写中它们通过import db from db拿到增强后的 Prisma 客户端。全局单例的构造逻辑在 apps/web/db/index.tsconst EnhancedPrisma enhancePrisma(PrismaClient) const prisma new EnhancedPrisma()读数据Query—— 一行代码就是完整 CRUD 的 Readconst users await db.user.findMany()完整示例见 apps/web/src/queries/getUsers.ts其中ctx.session.$authorize()还顺带完成了登录鉴权。写数据Mutation—— Create 同样是标准 Prisma 调用const user await db.user.create({data: {name: input.name, email: input.email}})参考 apps/web/src/mutations/createUser.ts。六、让 Blitz 自动生成完整 CRUD 代码手写 Query/Mutation 之后还可以让生成器一步到位——针对某个模型批量生成查询、变更文件和对应页面blitz generate queries Post blitz generate mutations Post相关生成器源码位于 packages/generator/src/generators/如 queries-generator.ts、mutations-generator.ts官方模板可直接对照 packages/generator/templates/queries/ 与 packages/generator/templates/mutations/ 查看生成结果。七、种子数据快速填充测试数据db/seeds.ts会在blitz db seed时执行。官方示例 apps/toolkit-app/db/seeds.ts 展示了两个关键点await db.$reset()重置数据库后再灌数据仅开发环境可用db.user.create({...})用标准 Prisma API 插入测试账号八、常见问题 FAQQ1改了 schema 后页面报错怎么办A运行blitz prisma generate重新生成客户端再执行一次blitz prisma migrate dev。Q2db.$reset()为什么在报错A它是开发环境专用的重置方法生产环境调用会被主动拦截见 packages/blitz/src/utils/enhance-prisma.ts。Q3默认数据库可以换吗A可以。把schema.prisma中datasource的provider与url改为 Postgres 等即可随后正常执行迁移。九、总结环节命令/文件建模编辑db/schema.prisma或blitz generate model迁移blitz prisma migrate dev访问数据src/queries与src/mutations中import db from db自动 CRUDblitz generate queries / mutations种子数据blitz db seed掌握「schema.prisma 建模 →blitz prisma migrate dev迁移 → 生成器自动 CRUD」这条主线你就能在 Blitz.js 中高效完成全栈数据层开发。接下来可以阅读 CONTRIBUTING.md 了解如何参与项目贡献或在apps/目录下对照各示例应用如 apps/web/、apps/toolkit-app/动手实践。⚡️【免费下载链接】blitz⚡️ The Missing Fullstack Toolkit for Next.js项目地址: https://gitcode.com/gh_mirrors/bl/blitz创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考