📝 Prisma ORM 入门指南:从零开始的全栈技能学习之旅
一、🚀 概述 (Overview)
-
引言与学习动机:
- 这篇文章的目的是为了记录和分享学习 Prisma ORM 的入门过程。
- 核心原因: 掌握一个全栈开发的新技能,以便能更高效、现代地进行后端和数据库开发。
-
技术栈介绍:
-
本次实战项目使用的主要技术栈:
- 后端框架: Koa.js (轻量级 Node.js 框架)
- ORM 技术: Prisma (现代数据库工具包)
-
文章侧重点: 虽然使用了 Koa.js,但本文的重点 是帮助读者快速入门和理解 Prisma 的核心概念和用法。
-
二、🛠️ 实战演练:Prisma 快速上手 (Hands-on Practice)
本章节将结合您的实际工程代码和命令,一步步引导读者。
2.1. 环境准备与项目初始化
-
项目初始化命令:
-
npm init -y -
npm install koa(安装 Koa) -
重点: 安装 Prisma 客户端和开发依赖:
npm install @prisma/clientnpm install -D prisma(作为开发依赖安装 CLI)
-
-
Prisma 初始化:
-
运行命令:
npx prisma init -
说明该命令生成的文件:
prisma/schema.prisma(数据库模型定义文件).env(环境变量文件,用于存放数据库连接字符串)
-
ini
DATABASE_URL="mysql://USER:PASSWORD@localhost:3306/DATABASE_NAME"
- 生成客户端
- 运行命令:
pnpm prisma generate
- 运行命令:
2.2. 定义数据模型 (Schema Definition)
kotlin
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "mysql"
url = env("DATABASE_URL")
}
model User {
id Int @id @default(autoincrement())
name String
email String @unique
password String
createdTime DateTime @default(now()) @map("created_time")
updatedTime DateTime @updatedAt @map("updated_time")
@@map("user")
}
2.3. 数据库表新建
执行如下命令,实体就能推送到数据库中。
perl
npx prisma db push

2.4 使用prisma进行增删改查
ini
// ...existing code...
const Koa = require('koa')
const Router = require('@koa/router')
const bodyParser = require('koa-bodyparser')
const { PrismaClient } = require('@prisma/client')
const prisma = new PrismaClient()
const app = new Koa()
// 实例化路由器,并设置公共路由前缀 /users
const router = new Router({
prefix: '/users'
})
app.use(bodyParser())
// 查询用户列表
router.get('/', async ctx => {
const users = await prisma.user.findMany()
ctx.body = users
})
// 查询单个用户
router.get('/:id', async ctx => {
const id = parseInt(ctx.params.id)
const user = await prisma.user.findUnique({
where: { id }
})
ctx.body = user
})
// 创建用户
router.post('/', async ctx => {
const user = ctx.request.body
const newUser = await prisma.user.create({
data: user
})
ctx.body = newUser
})
// 更新用户
router.patch('/:id', async ctx => {
const id = parseInt(ctx.params.id)
const updateUser = ctx.request.body
const user = await prisma.user.update({
where: {
id
},
data: updateUser
})
ctx.body = user
})
// 删除用户
router.delete('/:id', async ctx => {
const id = parseInt(ctx.params.id)
const user = await prisma.user.delete({
where: {
id
}
})
ctx.body = user
})
// 注册路由中间件
app.use(router.routes()).use(router.allowedMethods())
app.listen(3000, () => {
console.log('服务器运行在 3000 端口')
})
// ...existing code...
三、💡 总结与思考 (Conclusion and Reflection)
-
本次遇到的主要问题:
- 重点描述: Prisma 版本6无法运行。
- 解决方案: 回退到版本5后正常运行。
- 致谢与参考: 【十分钟掌握 Prisma 的使用】
-
未来学习方向(引出下一篇):
- Koa:
- Prisma更多功能点