SuperAPI AI 工具集

prisma-orm

编程与开发

查看项目

更新于 10-15 09:46

技能介绍

用途

Prisma ORM 技能用于为 Prisma ORM 的 schema 设计、迁移、关系、查询优化和数据库集成模式提供专家级辅助。当你需要设计数据库 schema、搭建迁移与数据库工作流、优化数据库查询、实现复杂关系,或配置 Prisma 与 Next.js 等框架集成时,可以调用该技能。

主要能力

  • 设计带正确关系的 Prisma schema
  • 生成和管理数据库迁移
  • 优化查询性能
  • 实现类型安全的数据库访问
  • 配置多数据库支持
  • 搭建种子(seeding)与测试策略

输入参数

该技能接受以下可选参数:

  • database(字符串,可选):postgresql、mysql、sqlite、mongodb
  • models(数组,可选):要创建的模型列表
  • relations(数组,可选):模型关系
  • features(数组,可选):migrations、seeding、edge

输出结构

技能会生成如下项目结构:

project/
├── prisma/
│   ├── schema.prisma           # Database schema
│   ├── migrations/             # Migration files
│   │   └── 20240101_init/
│   │       └── migration.sql
│   └── seed.ts                 # Seed script
├── lib/
│   └── db/
│       ├── prisma.ts           # Prisma client singleton
│       ├── queries/
│       │   ├── users.ts        # User queries
│       │   └── posts.ts        # Post queries
│       └── types.ts            # Extended types
└── package.json

生成的代码模式

Prisma Schema

包含 generator client、datasource db,以及 User、Profile、Post、Category、Tag、Comment 等模型和 Role 枚举。示例中使用了 @id @default(cuid())、@unique、@relation、onDelete: Cascade、@@index、@@map 等特性。

Prisma Client 单例

在 lib/db/prisma.ts 中通过 globalForPrisma 创建并导出 PrismaClient 单例,并根据 NODE_ENV 配置日志级别。

查询函数

在 lib/db/queries/users.ts 与 lib/db/queries/posts.ts 中提供类型安全的查询函数,包括按 ID/邮箱查询用户、创建/更新/删除用户、分页查询用户、查询已发布文章、按 slug 查询文章、创建文章等。示例使用 Prisma.UserGetPayload、select、include、$transaction、_count、connect、connectOrCreate 等。

种子脚本

prisma/seed.ts 使用 upsert 创建分类与管理员用户,使用 createMany 创建示例文章,并在结束时调用 $disconnect。

使用方式

迁移工作流

# Create initial migration
npx prisma migrate dev --name init

# Apply migrations to production
npx prisma migrate deploy

# Reset database (development only)
npx prisma migrate reset

# Generate Prisma Client
npx prisma generate

# Seed database
npx prisma db seed

package.json 脚本

可配置 db:generate、db:push、db:migrate、db:migrate:deploy、db:seed、db:studio、db:reset 等脚本,并通过 prisma.seed 指定 tsx prisma/seed.ts。

依赖

{
  "dependencies": {
    "@prisma/client": "^6.0.0"
  },
  "devDependencies": {
    "prisma": "^6.0.0"
  }
}

查询优化模式

  • 只选择需要的字段(使用 select 而非获取全部字段)
  • 批量操作(使用 $transaction 数组形式或交互式事务)
  • 使用游标分页(cursor + skip: 1 + take)

工作流

  1. 定义 schema——创建模型与关系
  2. 生成客户端——运行 prisma generate
  3. 创建迁移——运行 prisma migrate dev
  4. 实现查询——类型安全的数据库访问
  5. 种子数据库——创建初始数据
  6. 优化查询——select、batch、index

应用的最佳实践

  • 使用 Prisma Client 进行类型安全查询
  • 正确的关系建模
  • 高效的分页模式
  • 事务支持
  • 在适当位置使用级联删除
  • 为频繁查询的字段建立索引

适用场景

  • 使用 Prisma 设计数据库 schema
  • 搭建迁移与数据库工作流
  • 优化数据库查询
  • 实现复杂关系
  • 配置 Prisma 与 Next.js 或其他框架集成

目标流程

  • database-schema-design
  • migration-management
  • query-optimization
  • data-seeding
  • database-testing

参考

  • Prisma Documentation: https://www.prisma.io/docs
  • Prisma MCP Server: https://www.prisma.io/mcp
  • Prisma Examples: https://github.com/prisma/prisma-examples

限制

资料未提供该技能的收费、价格、平台限制或效果保证等信息。