Prisma 爱之初体验:一款非常棒的 ORM 工具库

🏛️ 365bet体育在线开户 ⏳ 2025-10-27 11:08:46 👤 admin 👁️ 3598 💎 714
Prisma 爱之初体验:一款非常棒的 ORM 工具库

前言

最近开发过程中接触到了 Prisma,所以今天就整理了下 Prisma 使用过程,希望可以帮助快速上手并应用到实际项目中。正文安装与初始化首先安装 Prisma CLI 和 Prisma Client:

代码语言:javascript代码运行次数:0运行复制npm install prisma --save-dev

npm install @prisma/client

然后执行初始化命令:

代码语言:javascript代码运行次数:0运行复制npx prisma init

初始化后项目中会生成以下文件结构:

代码语言:javascript代码运行次数:0运行复制prisma/

schema.prisma # 模型定义文件

.env # 数据库连接配置

配置数据库打开 schema.prisma,配置数据库连接信息,例如使用 PostgreSQL:

代码语言:javascript代码运行次数:0运行复制datasource db {

provider = "postgresql"

url = env("DATABASE_URL")

}

接着在 .env 文件中写入实际连接字符串:

代码语言:javascript代码运行次数:0运行复制DATABASE_URL="postgresql://user:password@localhost:5432/mydb"

定义数据模型在 schema.prisma 文件中添加模型定义,比如用户和文章模型:

代码语言:javascript代码运行次数:0运行复制model User {

id Int @id @default(autoincrement())

email String @unique

name String?

posts Post[]

}

model Post {

id Int @id @default(autoincrement())

title String

content String?

published Boolean @default(false)

author User @relation(fields: [authorId], references: [id])

authorId Int

}

执行数据库迁移运行迁移命令,将模型同步到数据库中:

代码语言:javascript代码运行次数:0运行复制npx prisma migrate dev --name init

每次修改模型后都应执行新的迁移命令。

使用 Prisma Client修改完模型后需要重新生成客户端:

代码语言:javascript代码运行次数:0运行复制npx prisma generate

然后就可以开始数据库操作了:

代码语言:javascript代码运行次数:0运行复制import { PrismaClient } from'@prisma/client'

const prisma = new PrismaClient()

// 创建用户

const user = await prisma.user.create({

data: {

email: 'alice@example.com',

name: 'Alice',

},

})

// 查询所有用户

const users = await prisma.user.findMany()

// 更新用户

await prisma.user.update({

where: { email: 'alice@example.com' },

data: { name: 'Alicia' },

})

// 删除用户

await prisma.user.delete({

where: { email: 'alice@example.com' },

})

高级功能关联查询

代码语言:javascript代码运行次数:0运行复制// 查询用户及其文章

const usersWithPosts = await prisma.user.findMany({

include: { posts: true },

})

嵌套写入

代码语言:javascript代码运行次数:0运行复制await prisma.user.create({

data: {

email: 'bob@example.com',

name: 'Bob',

posts: {

create: {

title: 'Hello World',

},

},

},

})

过滤、排序与分页

代码语言:javascript代码运行次数:0运行复制// 过滤已发布文章

await prisma.post.findMany({

where: { published: true },

})

// 排序用户

await prisma.user.findMany({

orderBy: { name: 'asc' },

})

// 分页查询

await prisma.post.findMany({

skip: 10,

take: 5,

})

可视化管理:Prisma Studio代码语言:javascript代码运行次数:0运行复制npx prisma studio

启动后你可以在浏览器中直观地查看和编辑数据库数据,非常适合开发调试。

最佳实践单例 Prisma Client

防止在热更新或函数中重复创建 PrismaClient:

代码语言:javascript代码运行次数:0运行复制// lib/prisma.ts

import { PrismaClient } from '@prisma/client'

const prisma = global.prisma || new PrismaClient()

if (process.env.NODE_ENV !== 'production') global.prisma = prisma

export default prisma

安全关闭连接

代码语言:javascript代码运行次数:0运行复制process.on('beforeExit', async () => {

await prisma.$disconnect()

})

批量操作

代码语言:javascript代码运行次数:0运行复制await prisma.$transaction([

prisma.user.create({ data: { name: 'Alice' } }),

prisma.post.create({ data: { title: 'Hello' } }),

])

与 GraphQL 的结合如果项目中使用 Apollo Server,可以直接在 resolver 中使用 Prisma 操作数据库:

代码语言:javascript代码运行次数:0运行复制const resolvers = {

Query: {

users: () => prisma.user.findMany(),

user: (_, args) => prisma.user.findUnique({ where: { id: Number(args.id) } }),

},

User: {

posts: (parent) => prisma.user.findUnique({ where: { id: parent.id } }).posts(),

},

}

最后Prisma 提供了一套现代化、类型安全、易扩展的数据库操作方式,提升了开发效率与代码可维护性。通过今天的教程,相信你已经对 Prisma 的使用有了基本掌握。后续还可以结合 REST、GraphQL、Serverless 等架构深入使用。

今天的分享就这些了,感谢大家的阅读,如果文章中存在错误的地方欢迎指正!

相关掠夺

28365365体育
王者荣耀张飞、达摩哪个好 达摩、张飞对比评测

王者荣耀张飞、达摩哪个好 达摩、张飞对比评测

🗓️ 07-04 👁️ 3276
365bet体育在线开户
在CAD中绘制圆点的操作步骤

在CAD中绘制圆点的操作步骤

🗓️ 08-24 👁️ 9802
365bet在线体育投注网
oppo手机呼叫等待怎么设置

oppo手机呼叫等待怎么设置

🗓️ 08-22 👁️ 2917