前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Prisma 爱之初体验:一款非常棒的 ORM 工具库

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

作者头像
萌萌哒草头将军
发布2025-04-09 13:13:32
发布2025-04-09 13:13:32
21500
代码可运行
举报
文章被收录于专栏:前端框架前端框架
运行总次数:0
代码可运行

前言 最近开发过程中接触到了 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 等架构深入使用。

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-04-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 萌萌哒草头将军 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言 最近开发过程中接触到了 Prisma,所以今天就整理了下 Prisma 使用过程,希望可以帮助快速上手并应用到实际项目中。
  • 正文
    • 安装与初始化
    • 配置数据库
    • 定义数据模型
    • 执行数据库迁移
    • 使用 Prisma Client
    • 高级功能
    • 可视化管理:Prisma Studio
    • 最佳实践
    • 与 GraphQL 的结合
  • 最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档