数据库管理
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:testSchema 文件位置
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 自动生成,不要手动编辑。