
Prisma 基础概念和配置
Prisma 是一个Node.js的数据库工具,对TypeScript也有着良好的支持,可以简化数据库的访问,不用再写繁琐的 SQL 语句
以下是基本的使用方法:
1. 安装 Prisma
Bash1npm install prisma --save-dev
2. 初始化 Prisma
Bash1npx prisma init
这将会在你的项目根目录下创建 prisma 文件夹,包含以下文件:
- schema.prisma: 定义你的数据库 schema 和模型。
- migrations/: 存储数据库迁移脚本。
3. 配置数据库连接
打开 schema.prisma 文件,配置你的数据库连接信息:
PRISMA1generator client { 2 provider = "prisma-client-js" 3} 4 5datasource db { 6 provider = "postgresql" // 或者 "mysql", "sqlite", "sqlserver" 7 url = env("DATABASE_URL") 8}
4. 定义数据模型
在 schema.prisma 文件中定义你的数据模型:
PRISMA1model User { 2 id Int @id @default(autoincrement()) 3 email String @unique 4 name String? 5 createdAt DateTime @default(now()) 6 updatedAt DateTime @updatedAt 7}
5. 生成 Prisma Client
Bash1npx prisma generate
这将会在 node_modules/.prisma 目录下生成 Prisma Client,你可以使用它来与数据库交互。
6. 使用 Prisma Client
TS1import { PrismaClient } from '@prisma/client'; 2 3const prisma = new PrismaClient(); 4 5async function main() { 6 // 创建新用户 7 const newUser = await prisma.user.create({ 8 data: { 9 email: 'alice@example.com', 10 name: 'Alice', 11 }, 12 }); 13 console.log(newUser); 14 15 // 查询所有用户 16 const allUsers = await prisma.user.findMany(); 17 console.log(allUsers); 18} 19 20main() 21 .catch((e) => { 22 throw e; 23 }) 24 .finally(async () => { 25 await prisma.$disconnect(); 26 });
7. Prisma 多对多
假设我们有一个多对多关系,比如学生和课程之间的关系。假设我们有以下模型:
PRISMA1model Student { 2 id Int @id @default(autoincrement()) 3 name String 4 courses Course[] @relation("StudentToCourse", references: [id]) 5} 6 7model Course { 8 id Int @id @default(autoincrement()) 9 name String 10 students Student[] @relation("StudentToCourse", references: [id]) 11}
现在,如果我们想查询一个学生所选的所有课程,或者一个课程被哪些学生选了,可以使用 Prisma Client 提供的查询方法,例如:
JS1const student = await prisma.student.findUnique({ 2 where: { id: 1 }, 3 include: { courses: true }, 4}); 5 6console.log(student.courses);
这将返回具有特定 ID 的学生所选的所有课程。
类似地,如果我们想查询一个课程被哪些学生选了,可以使用类似的查询方法:
JS1const course = await prisma.course.findUnique({ 2 where: { id: 1 }, 3 include: { students: true }, 4}); 5 6console.log(course.students);
这将返回具有特定 ID 的课程被选修的所有学生
8. 数据库迁移
当你修改了 schema.prisma 文件后,你需要运行以下命令生成迁移脚本:
Bash1npx prisma migrate dev
这将会根据你的 schema 变更生成新的迁移脚本,并将其应用到数据库中。
更多信息:
- Prisma 官方文档: https://www.prisma.io/docs/
- Prisma Examples: https://github.com/prisma/prisma-examples
希望以上信息能够帮助你入门 Prisma。
Likes


