注意 — 目前 Prisma 需要安装 Node.js 来运行某些生成代码。请确保在运行 bunx prisma 命令的环境中已安装 Node.js。
创建新项目
首先,创建一个目录并用 bun init 初始化它。mkdir prisma-postgres-app
cd prisma-postgres-app
bun init
安装 Prisma 依赖
然后安装 Prisma CLI (prisma)、Prisma 客户端 (@prisma/client) 以及 accelerate 扩展作为依赖。bun add -d prisma
bun add @prisma/client @prisma/extension-accelerate
用 PostgreSQL 初始化 Prisma
我们将使用带 bunx 的 Prisma CLI 初始化 schema 和迁移目录。数据库使用 PostgreSQL。bunx --bun prisma init --db
这会创建一个基础 schema。我们需要更新它以使用新的无需 Rust 的、为 Bun 优化的客户端。打开 prisma/schema.prisma,修改 generator 块,然后添加一个简单的 User 模型。
prisma/schema.prismagenerator client {
provider = "prisma-client"
output = "./generated"
engineType = "client"
runtime = "bun"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
}
配置数据库连接
在 .env 文件中设置你的 Postgres 数据库 URL。DATABASE_URL="postgresql://username:password@localhost:5432/mydb?schema=public"
创建并运行数据库迁移
然后生成并运行初始迁移。这会在 prisma/migrations 中生成 .sql 迁移文件,并对你的 Postgres 数据库执行迁移。bunx --bun prisma migrate dev --name init
从 .env 加载环境变量
从 prisma/schema.prisma 加载 Prisma schema
数据源 "db":PostgreSQL 数据库 "mydb",schema "public" 于 "localhost:5432"
应用迁移 `20250114141233_init`
以下迁移已根据新 schema 变更创建并应用:
prisma/migrations/
└─ 20250114141233_init/
└─ migration.sql
数据库现已与 schema 同步。
✔ 在 18ms 内生成 Prisma Client (6.17.1) 到 ./generated
生成 Prisma 客户端
如输出所示,每次执行新迁移时 Prisma 都会重新生成 Prisma 客户端。客户端提供了完整类型化的数据库读写 API。你也可以使用 Prisma CLI 手动重新生成客户端。bunx --bun prisma generate
用 Accelerate 初始化 Prisma 客户端
现在我们需要创建一个 Prisma 客户端实例。新建文件 prisma/db.ts,用 Postgres 适配器初始化 PrismaClient。
prisma/db.tsimport { PrismaClient } from "./generated/client";
import { withAccelerate } from '@prisma/extension-accelerate'
export const prisma = new PrismaClient().$extends(withAccelerate())
创建测试脚本
我们写一个简单脚本来创建新用户,然后统计数据库中用户数量。
index.tsimport { prisma } from "./prisma/db";
// 创建新用户
await prisma.user.create({
data: {
name: "John Dough",
email: `john-${Math.random()}@example.com`,
},
});
// 统计用户数量
const count = await prisma.user.count();
console.log(`数据库中共有 ${count} 个用户。`);
运行并测试应用
用 bun run 运行此脚本。每次运行都会创建一个新用户。
就这样!现在你已经用 Bun 设置了 Prisma Postgres,建议继续开发时参考官方 Prisma Postgres 文档。