Skip to Content

数据库管理

Prisma ORM v7

本项目使用 Prisma ORM v7 with Driver Adapters for PostgreSQL。

常用命令

# 生成 Prisma Client pnpm db:generate # 推送 schema 变更到数据库(开发环境) pnpm db:push # 创建并运行迁移(生产环境) pnpm db:migrate # 打开 Prisma Studio(数据库 GUI) pnpm db:studio # 测试数据库连接 pnpm db:test

Schema 文件位置

packages/db/ ├── prisma/ │ ├── schema.prisma # 数据库 schema 定义 │ └── migrations/ # 迁移历史记录 ├── src/ │ ├── client.ts # Prisma Client 单例 │ ├── index.ts # 导出 API │ └── generated/ # 生成的类型(不要编辑)

修改 Schema

1. 编辑 schema.prisma

model Product { id String @id @default(cuid()) name String description String? price Decimal @db.Decimal(10, 2) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt }

2. 开发环境:推送变更

pnpm db:push

快速原型开发,不创建迁移文件。

3. 生产环境:创建迁移

pnpm db:migrate # 输入迁移名称,例如:add_product_model

创建迁移文件,用于生产环境部署。

4. 生成 Prisma Client

pnpm db:generate

更新类型定义。

使用数据库

import { prisma } from "@repo/db"; // ✅ 类型安全的查询 const products = await prisma.product.findMany({ where: { price: { gte: 100, }, }, orderBy: { createdAt: 'desc', }, }); // ✅ 创建记录 const product = await prisma.product.create({ data: { name: "iPhone 15", description: "Latest model", price: 999, }, });

最佳实践

开发环境使用 db:push

快速迭代时使用 pnpm db:push,不生成迁移文件。

生产环境使用 db:migrate

准备部署时使用 pnpm db:migrate,创建版本化的迁移文件。

永远提交迁移文件

prisma/migrations/ 目录应该提交到 Git,团队成员共享迁移历史。

注意:不要编辑生成的代码

src/generated/ 目录由 Prisma 自动生成,不要手动编辑。