Skip to content

NOTE

**注意** — Prisma 的动态子命令加载系统目前需要与 Bun 一起安装 npm。这 会影响某些 CLI 命令,如 `prisma init`、`prisma migrate` 等。生成的代码使用新的 `prisma-client` 生成器可以在 Bun 上完美运行。

创建新项目

Prisma 可以在 Bun 上开箱即用。首先,创建一个目录并使用 bun init 初始化它。

bash
mkdir prisma-app
cd prisma-app
bun init

安装 Prisma 依赖

然后安装 Prisma CLI(prisma)、Prisma Client(@prisma/client)和 LibSQL 适配器作为依赖。

bash
bun add -d prisma
bun add @prisma/client @prisma/adapter-libsql

使用 SQLite 初始化 Prisma

我们将使用 bunx 运行 Prisma CLI 来初始化我们的模式和迁移目录。为简单起见,我们将使用内存中的 SQLite 数据库。

bash
bunx --bun prisma init --datasource-provider sqlite

这将创建一个基本模式。我们需要更新它以使用带有 Bun 优化的新无 Rust 客户端。打开 prisma/schema.prisma 并修改 generator 块,然后添加一个简单的 User 模型。

prisma
generator client {
	provider = "prisma-client"
	output = "./generated"
	engineType = "client"
	runtime = "bun"
}

datasource db {
	provider = "sqlite"
	url      = env("DATABASE_URL")
}

model User { 
	id    Int     @id @default(autoincrement()) 
	email String  @unique
	name  String?
} 

创建并运行数据库迁移

然后生成并运行初始迁移。

这将在 prisma/migrations 中生成一个 .sql 迁移文件,创建一个新的 SQLite 实例,并针对新实例执行迁移。

bash
bunx --bun prisma migrate dev --name init
txt
Environment variables loaded from .env
Prisma schema loaded from prisma/schema.prisma
Datasource "db": SQLite database "dev.db" at "file:./dev.db"

SQLite database dev.db created at file:./dev.db

Applying migration `20251014141233_init`

The following migration(s) have been created and applied from new schema changes:

prisma/migrations/
	└─ 20251014141233_init/
	└─ migration.sql

Your database is now in sync with your schema.

✔ Generated Prisma Client (6.17.1) to ./generated in 18ms

生成 Prisma Client

如输出所示,每当我们执行新迁移时,Prisma 会重新生成我们的 Prisma client。该客户端提供了一个完全类型化的 API 用于从数据库读写数据。你可以使用 Prisma CLI 手动重新生成客户端。

sh
bunx --bun prisma generate

使用 LibSQL 初始化 Prisma Client

现在我们需要创建一个 Prisma 客户端实例。创建一个新文件 prisma/db.ts 来使用 LibSQL 适配器初始化 PrismaClient。

ts
import { PrismaClient } from "./generated/client";
import { PrismaLibSQL } from "@prisma/adapter-libsql";

const adapter = new PrismaLibSQL({ url: process.env.DATABASE_URL || "" });
export const prisma = new PrismaClient({ adapter });

创建测试脚本

让我们编写一个简单的脚本来创建一个新用户,然后统计数据库中的用户数量。

ts
import { 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(`There are ${count} users in the database.`);

运行和测试应用

让我们使用 bun run 运行此脚本。每次运行它时,都会创建一个新用户。

bash
bun run index.ts
txt
Created john-0.12802932895402364@example.com
There are 1 users in the database.
bash
bun run index.ts
txt
Created john-0.8671308799782803@example.com
There are 2 users in the database.
bash
bun run index.ts
txt
Created john-0.4465968383115295@example.com
There are 3 users in the database.

就是这样!现在你已经使用 Bun 设置了 Prisma,我们建议在继续开发应用时参考 官方 Prisma 文档

Bun学习网由www.bunjs.com.cn整理维护