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整理維護