Prisma 是当前 Node.js 生态中最现代化的 ORM:类型安全、自动迁移、可视化数据浏览器、卓越的开发体验。本文覆盖从 Schema 设计到生产部署的完整工作流。
一、初始化
npm install prisma @prisma/client
npx prisma init
// prisma/schema.prisma
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
posts Post[]
createdAt DateTime @default(now())
}
model Post {
id Int @id @default(autoincrement())
title String
content String?
published Boolean @default(false)
author User @relation(fields: [authorId], references: [id])
authorId Int
}
二、Migration 工作流
# 生成迁移文件
npx prisma migrate dev --name init
# 应用到生产数据库
npx prisma migrate deploy
# 生成 Prisma Client(类型自动更新)
npx prisma generate
# 打开数据浏览器
npx prisma studio
三、CRUD 示例(Express)
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({
include: { posts: { where: { published: true } } },
});
// 更新
const updated = await prisma.user.update({
where: { id: 1 },
data: { name: 'Alice Updated' },
});
// 事务
const [user, post] = await prisma.$transaction([
prisma.user.create({ data: { email: 'bob@example.com' } }),
prisma.post.create({ data: { title: 'Hello', authorId: 1 } }),
]);
相关阅读
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。