mcpField
P
prisma-7

prisma-7

github.com/fusengine开发3463 次安装2 周前更新
代码仓库

关于 prisma-7

面向使用 Prisma 7 的开发者和编码 Agent,涵盖配置、数据建模、查询、迁移、性能、安全与部署,并重点说明从 v6 升级的破坏性变更。

主要功能

  1. 01Prisma 6 到 7 升级指南
  2. 02数据建模与类型安全查询
  3. 03CRUD、关系与事务
  4. 04迁移和性能参考
  5. 05安全与部署指南
  6. 06符合 SOLID 的 TypeScript 接口参考

适用场景

  1. 01将项目从 Prisma 6 升级
  2. 02设计数据模型和数据库查询
  3. 03规划安全的数据库迁移
  4. 04排查部署与性能问题

MCP 相关

参考指南包含 MCP Server 主题,但未说明此 skill 提供 MCP 功能。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/fusengine/agents --skill prisma-7

安装后在 Claude Code 中输入/prisma-7确认已加载。

详细介绍

涵盖 Prisma 7 这款无需 Rust 的 TypeScript ORM:v6 → v7 的破坏性变更(provider 从 `prisma-client-js` 重命名为 `prisma-client`、现在必须指定 output path、导入路径从 `@prisma/client` 改为生成文件所在路径、现在必须使用数据库驱动适配器——例如,PostgreSQL 使用 `@prisma/adapter-pg`,以及配置迁移到 TS 配置文件——7.10 起使用 `prisma7.config.ts`(仍会读取 `prisma.config.*` 作为回退),7.0–7.9 使用 `prisma.config.ts`)、schema 建模、CRUD / 关系 / 筛选 / 分页 / 事务、用于类型安全原始查询的 TypedSQL,以及用于排除敏感字段的 Omit API。

还涵盖迁移(基线设置、影子数据库、压缩迁移、零停机)、性能(N+1 检测、连接池、Accelerate)、安全(SQL 注入防护、行级安全、加密)、各数据库指南(PostgreSQL、MySQL、SQLite、CockroachDB、Turso——截至 7.10 的所有 Prisma 7.x 版本均不支持 MongoDB;请继续使用 6.19)、框架集成(Next.js、Astro、SvelteKit、Remix 等),以及在 Vercel / Netlify / Railway / AWS Lambda / Cloudflare Workers / Docker 上的部署。包含符合 SOLID 原则的 TypeScript 接口参考,用于 schema 设计。不会深入介绍 Better Auth 自身的数据库适配器配置(better-auth)——此技能仅涉及 ORM 层。

Prisma 7 ORM

无需 Rust 的 TypeScript ORM,打包体积缩小 90%,查询速度提升 3 倍。

Agent 工作流(必须遵循)

在进行任何实现之前,必须并行启动 3 个 Agent,每个 Agent 各调用一次 Agent,并指定一个 name:

  1. fuse-ai-pilot:explore-codebase - 分析现有 schema 和数据库模式
  2. fuse-ai-pilot:research-expert - 通过 Context7 / Exa 核实最新 Prisma 7 文档
  3. mcp__context7__query-docs - 检查破坏性变更和迁移指南

实现后,运行 fuse-ai-pilot:sniper 进行验证。


概述

适用场景
  • 在 Next.js 16 应用中访问数据库
  • 使用完整 TypeScript 类型推断的类型安全查询
  • 以 schema 为先的数据库建模和迁移
  • 需要 TypedSQL 的复杂查询
  • 使用 Omit API 排除敏感字段
为什么选择 Prisma 7
功能优势
无 Rust 客户端打包体积缩小 90%(14MB → 1.6MB)
查询性能大型数据集上的速度最高可提升 3 倍
ESM 优先原生 ES 模块,现代化架构
TypedSQL类型安全的原始 SQL 查询
Omit API全局排除敏感字段
驱动适配器直接集成数据库驱动

v6 的破坏性变更

关键迁移点
变更v6v7
Providerprisma-client-jsprisma-client
Output path可选必须指定
导入@prisma/client./generated/prisma/client
驱动内置必须使用适配器
配置仅 schemaprisma7.config.ts(7.10 起,回退时使用 prisma.config.*);prisma.config.ts(7.0–7.9)——编辑 prisma init 创建的文件
必需的 Schema 变更

Provider 必须设为 prisma-client,并显式指定 output path。不再生成到 node_modules。

必须使用驱动适配器

PostgreSQL 必须使用 @prisma/adapter-pg,MySQL 必须使用 @prisma/adapter-mariadb,SQLite 必须使用 @prisma/adapter-better-sqlite3。

值得关注的 7.x 次要版本发布(当前稳定版本:7.10.0)
版本变更
7.4Prisma Client 中的查询计划缓存;partialIndexes 预览功能(@@index(..., where: raw("...")))
7.5通过保存点回滚嵌套事务
7.6prisma postgres link;@prisma/adapter-pg 可直接接受连接字符串
7.7prisma bootstrap 命令
7.8PrismaClient 上的 queryPlanCacheMaxSize 选项(0 可禁用缓存)
7.9CLI 补全;AI Agent 安全检查扩展至 db push --accept-data-loss;修复了 7.0 引入的 TypeScript 性能回归
7.10Prisma Studio 绑定到 127.0.0.1 并进行来源检查;@prisma/adapter-mariadb 可接受现有连接池

Prisma 8 目前仅提供候选发布版(npm 的 latest 标签指向 8.0.0-rc.*)——稳定安装时请固定使用 prisma@7 / @prisma/client@7。


SOLID 架构

模块结构

数据库代码组织在 modules/cores/db/ 中:

  • modules/cores/db/prisma.ts - PrismaClient 单例
  • modules/cores/db/generated/ - 生成的客户端
  • prisma/schema.prisma - Schema 定义
  • prisma/migrations/ - 迁移历史
  • prisma7.config.ts - Prisma 配置(7.0–7.9:prisma.config.ts)
文件组织
文件用途
prisma.ts客户端单例
schema.prisma模型、关系
seed.ts数据库填充

核心概念

单例模式(Next.js)

防止热重载时创建多个 PrismaClient 实例。在开发环境中使用 globalThis 缓存实例。

输出路径

生成的客户端会放在自定义路径,而不是 node_modules。从生成的文件夹导入。

驱动适配器

直接集成数据库驱动,以获得更好的性能和控制力。在驱动层配置连接池。

TypedSQL

编写具备完整类型安全性的原始 SQL。结果会根据查询进行类型定义。

Omit API

全局或按查询排除字段。非常适合用于密码和敏感数据。


参考指南(130 个文件)

核心设置
需求参考文档
初始设置installation.md
PrismaClient 单例client.md
客户端 API 方法client-api.md
配置prisma-config.md
CLI 命令cli-reference.md
编辑器设置editor-setup.md
Schema 与建模
需求参考文档
Schema 设计schema.md
Schema 语法schema-reference.md
数据建模data-modeling.md
字段属性field-attributes.md
模型属性model-attributes.md
枚举enums.md
默认值default-values.md
复合类型composite-types.md
标量列表/数组scalar-lists.md
参照操作referential-actions.md
查询与操作
需求参考文档
CRUD 操作queries.md
关系relations.md
筛选filtering.md
排序sorting.md
Select 与 Includeselect-include.md
分页(游标)pagination-cursor.md
分页(偏移量)pagination-offset.md
去重distinct.md
计数与存在性count-exists.md
大小写敏感性case-sensitivity.md
聚合aggregations.md
事务transactions.md
高级查询
需求参考文档
TypedSQLtypedsql.md
原始查询raw-queries.md
JSON 字段json-fields.md
全文搜索full-text-search.md
视图views.md
存储过程stored-procedures.md
触发器triggers.md
约束constraints.md
高级索引indexes-advanced.md
Migrations
NeedReference
Migration workflowmigrations.md
Seedingseeding.md
Baseliningbaselining.md
Shadow databaseshadow-database.md
Migration historymigration-history.md
Squashingsquashing.md
Hotfixinghotfixing.md
Down migrationsdown-migrations.md
Data migrationsdata-migrations.md
Zero-downtimezero-downtime.md
Performance
NeedReference
Optimizationoptimization.md
Query optimizationquery-optimization.md
N+1 problemn-plus-one.md
Batchingbatching.md
Lazy loadinglazy-loading.md
Caching strategiescaching-strategies.md
Connection limitsconnection-limits.md
Cold startscold-starts.md
Bundle sizebundle-size.md
Accelerateaccelerate.md
Connection poolingconnection-pooling.md
Security
NeedReference
Connection URLsconnection-urls.md
Environment variablesenvironment-variables.md
SSL/TLSssl-tls.md
SQL injectionsql-injection.md
Row-level securityrow-level-security.md
Encryptionencryption.md
Audit loggingaudit-logging.md
GDPR compliancegdpr-compliance.md
Databases
NeedReference
PostgreSQLpostgresql.md
MySQLmysql.md
SQLitesqlite.md
MongoDB (deprecated)mongodb.md
CockroachDBcockroachdb.md
PlanetScaleplanetscale.md
Supabasesupabase.md
Neonneon.md
Tursoturso.md
Extensions & Integrations
NeedReference
Extensionsextensions.md
Driver adaptersdriver-adapters.md
Omit APIomit-api.md
Middleware (deprecated)middleware.md
Soft deletesoft-delete.md
Read replicasread-replicas.md
Multi-databasemulti-database.md
Multi-schemamulti-schema.md
Framework Integrations
NeedReference
Next.jsnextjs-integration.md
Astroastro.md
Nuxtnuxt.md
SvelteKitsveltekit.md
SolidStartsolidstart.md
Remixremix.md
React Routerreact-router.md
Honohono.md
Expressexpress.md
Auth Integrations
NeedReference
Clerkclerk.md
Auth.jsauthjs.md
Better Authbetterauth.md
Permit.iopermit-io.md
Deployment
NeedReference
Deployment guidedeployment.md
Vercelvercel.md
Netlifynetlify.md
Railwayrailway.md
Renderrender.md
Fly.ioflyio.md
AWS Lambdaaws-lambda.md
Cloudflare Workerscloudflare-workers.md
Dockerdocker.md
Herokuheroku.md
Deno Deploydeno-deploy.md
Tooling
NeedReference
VS Codevscode.md
GitHub Copilotgithub-copilot.md
Tabninetabnine.md
SafeQLsafeql.md
Prisma AIprisma-ai.md
MCP Servermcp-server.md
Turborepoturborepo.md
pnpm workspacespnpm-workspaces.md
Monitoring
NeedReference
Error handlingerror-handling.md
Error codeserror-codes.md
Logginglogging.md
OpenTelemetryopentelemetry.md
DataDogdatadog.md
Studiostudio.md
Testingtesting.md
ORM Comparisons
NeedReference
vs TypeORMvs-typeorm.md
vs Sequelizevs-sequelize.md
vs Drizzlevs-drizzle.md
vs Mongoosevs-mongoose.md
vs Kyselyvs-kysely.md
Migration Guides
NeedReference
From TypeORMmigrate-from-typeorm.md
From Sequelizemigrate-from-sequelize.md
From Drizzlemigrate-from-drizzle.md
TypeScript 接口(SOLID)

references/interfaces/ 存放符合 SOLID 原则的 Prisma 7 架构类型定义,与实现分离。编写或审查类型化架构代码时,请加载这些定义:

需求参考资料
所有接口文件概览interfaces/INDEX.md
架构类型:GeneratorConfig、ModelDefinition、FieldAttribute、EnumDefinitioninterfaces/schema.types.md
数据建模类型:规范化、基数interfaces/data-modeling.types.md
枚举类型:值定义、状态/角色模式interfaces/enums.types.md
字段属性类型:标识、唯一性、默认值、映射interfaces/field-attributes.types.md
模型属性类型:复合键、复合索引interfaces/model-attributes.types.md
关系类型:一对一、引用操作、级联interfaces/relations.types.md
迁移类型:工作流、部署、数据填充interfaces/migrations.types.md

最佳实践

  1. Next.js 中的单例 - 在 globalThis 中缓存 PrismaClient
  2. 必须指定输出路径 - 切勿生成到 node_modules
  3. 驱动适配器 - 使用原生驱动以获得更好的性能
  4. 省略敏感字段 - 配置全局省略密码
  5. 复杂查询使用 TypedSQL - 用于 Prisma 无法表达的查询
  6. 验证索引 - 检查查询计划,排查 N+1 问题

禁止的模式

模式原因替代方案
从 @prisma/client 导入v7 要求使用生成路径从 ./generated/prisma/client 导入
prisma-client-js provider已在 v7 中弃用使用 prisma-client
未指定输出路径v7 中为必需项在生成器中设置 output
MongoDB在 v7.x(7.0-7.10)中不受支持使用 Prisma 6.19
datasource 中的 url已弃用使用配置文件(7.10+ 使用 prisma7.config.ts,7.0–7.9 使用 prisma.config.ts)

评论

支持 Markdown