prisma
Prisma 常用命令与最佳实践
基础命令
初始化与设置
# 初始化 Prisma
npx prisma init
# 生成 Prisma Client
npx prisma generate
# 安装 Prisma Client
npm install @prisma/client
数据库操作命令
迁移相关
# 创建迁移(会生成 SQL 迁移文件)
npx prisma migrate dev --name init
# 部署迁移(生产环境使用)
npx prisma migrate deploy
# 重置数据库(删除所有数据并重新应用迁移)
npx prisma migrate reset
数据库查看与管理
# 启动 Prisma Studio(可视化数据库管理工具)
npx prisma studio
# 拉取数据库结构(从现有数据库生成 schema)
npx prisma db pull
# 推送 schema 更改到数据库(开发环境使用)
npx prisma db push
格式化与验证
# 格式化 schema 文件
npx prisma format
# 验证 schema 文件
npx prisma validate
数据填充 (Seed)
# 运行 seed 脚本
npx prisma db seed
配置 Seed
- 在
package.json中添加 seed 配置:
{
"prisma": {
"seed": "ts-node prisma/seed.ts"
}
}
- 创建 seed 文件
prisma/seed.ts:
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
async function main() {
// 清理现有数据
await prisma.user.deleteMany();
// 创建基础数据
const alice = await prisma.user.create({
data: {
email: 'alice@example.com',
name: 'Alice',
posts: {
create: {
title: 'Hello World',
content: 'This is my first post!',
},
},
},
});
// 批量创建数据
const users = await prisma.user.createMany({
data: [
{ email: 'bob@example.com', name: 'Bob' },
{ email: 'carol@example.com', name: 'Carol' },
],
});
console.log({ alice, users });
}
main()
.catch((e) => {
console.error(e);
process.exit(1);
})
.finally(async () => {
await prisma.$disconnect();
});
Seed 使用技巧
- 条件填充
async function seedUsers() {
const userCount = await prisma.user.count();
if (userCount === 0) {
// 只在没有用户时填充数据
await prisma.user.createMany({
data: [
{ email: 'admin@example.com', name: 'Admin', role: 'ADMIN' },
{ email: 'user@example.com', name: 'User', role: 'USER' },
],
});
}
}