Next.js+prisma开发一
1.初始化Next.js项目
#按版本安装
npx create-next-app@13.4.5
如果最新版本
执行:npx create-next-app@latest
2. 安装Prima和客户端
npm install prisma --save-dev
npm install @prisma/client
3.初始化Prisma,以SQLit举例
# 初始化 Prisma 并配置 SQLite
npx prisma init --datasource-provider sqlite
执行后生成
数据模型定义文件:prisma/schema.prisma
自动配置:.env( DATABASE_URL="file:./prisma/dev.db"
)
4. 定义数据模型,编辑prisma/schema.prisma:
model Goods {id Int @id @default(autoincrement())name String @map("goods_name")price Float @default(0)stock Int @default(0) @map("goods_num")createdAt DateTime @default(now()) @map("created_at")updatedAt DateTime @updatedAt @map("updated_at")@@map("goods") // 数据库表名
}
5. 同步数据库,生成迁移文件
#此命令中init可以随意名命
npx prisma migrate dev --name init
此时会生成: prisma/dev.db(SQLite数据库文件)和 src/generated/prisma
6.创建Prisma单例
新建src/lib/prisma.ts
import { PrismaClient } from '@prisma/client'const prismaClientSingleton = () => {return new PrismaClient()
}type PrismaClientSingleton = ReturnType<typeof prismaClientSingleton>const globalForPrisma = globalThis as unknown as {prisma: PrismaClientSingleton | undefined
}export const prisma = globalForPrisma.prisma ?? prismaClientSingleton()if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma
7. 当你需要修改schema.prisma时,比如新增字段时,
7.1先确保字段允许null或设置默认值
model Users {updatedAt DateTime? @map("updated_at") # 允许 NULL# 或status Int @default(1) # 设置默认值
}
7.2生成迁移文件
npx prisma migrate dev --name your_migration(your_migration改成你名命的)
7.3 执行应用迁移(存疑)
npx prisma migrate
8. 备份,会生成一份备份数据库
cp ./prisma/dev.db ./prisma/dev.db.bak
9. 打开数据库可视化面板
npx prisma studio
10.监听模型变化自动生成客户端
npx prisma generate --watch
11.重置数据库
npx prisma migrate reset