執行環境套件管理器打包器測試執行器程式碼檢查格式化指南參考部落格意見回饋

在 Bun 中使用 Prisma Postgres

  1. 建立新專案

    首先,建立一個目錄並用 bun init 初始化它。

    terminal
    mkdir prisma-postgres-app
    cd prisma-postgres-app
    bun init
    
  2. 安裝 Prisma 相依

    然後將 Prisma CLI(prisma)、Prisma Client(@prisma/client)和 Postgres 驅動介面卡(@prisma/adapter-pg)作為相依項安裝。

    terminal
    bun add -d prisma
    bun add @prisma/client @prisma/adapter-pg
    
  3. 使用 PostgreSQL 初始化 Prisma

    使用 bunx 和 Prisma CLI 初始化 schema 與遷移目錄,並將 PostgreSQL 作為資料庫。

    terminal
    bunx --bun prisma init --db
    

    這將建立一個基礎 schema。將其更新為使用針對 Bun 最佳化的無 Rust 客戶端:開啟 prisma/schema.prisma 並修改 generator 塊,然後新增一個 User 模型。

    prisma/schema.prisma
    generator client {
    	provider = "prisma-client"
    	output = "../generated/prisma" // [!code --]
    	output = "./generated" // [!code ++]
    	engineType = "client" // [!code ++]
    	runtime = "bun" // [!code ++]
    }
    
    datasource db {
    	provider = "postgresql"
    }
    
    model User { // [!code ++]
    	id    Int     @id @default(autoincrement()) // [!code ++]
    	email String  @unique // [!code ++]
    	name  String? // [!code ++]
    } // [!code ++]
    
  4. 設定資料庫連線

    在 .env 檔案中設定你的 Postgres 資料庫 URL。

    .env
    DATABASE_URL="postgresql://username:password@localhost:5432/mydb?schema=public"
    
  5. 建立並執行資料庫遷移

    然後生成並執行初始遷移。

    該命令會將 .sql 遷移檔案寫入 prisma/migrations,並在你的 Postgres 資料庫上執行該檔案。Bun 使用 --bun 執行 CLI 時不會自動載入 .env。prisma init 生成的 prisma.config.ts 會從環境變數中讀取 DATABASE_URL,因此請顯式傳入 --env-file=.env。

    terminal
    bun run --bun --env-file=.env prisma migrate dev --name init
    
    Text
    Loaded Prisma config from prisma.config.ts.
    
    Prisma schema loaded from prisma/schema.prisma.
    Datasource "db": PostgreSQL database "mydb", schema "public" at "localhost:5432"
    
    應用遷移 `20250114141233_init`
    
    以下遷移已根據新 schema 變更建立並應用:
    
    prisma/migrations/
      └─ 20250114141233_init/
        └─ migration.sql
    
    Your database is now in sync with your schema.
    
  6. 生成 Prisma Client

    prisma migrate dev 不會生成 Prisma client,因此請使用 Prisma CLI 生成它。該客戶端提供了一個完全型別安全的 API,用於讀取和寫入資料庫。

    terminal
    bun run --bun --env-file=.env prisma generate
    
  7. 使用 Postgres 介面卡初始化 Prisma Client

    建立一個新檔案 prisma/db.ts,使用 Postgres 介面卡初始化 PrismaClient。

    prisma/db.ts
    import { PrismaClient } from "./generated/client";
    import { PrismaPg } from "@prisma/adapter-pg";
    
    const adapter = new PrismaPg({ connectionString: process.env.DATABASE_URL! });
    export const prisma = new PrismaClient({ adapter });
    
  8. 建立測試指令碼

    編寫一個指令碼,建立一個新使用者,然後統計資料庫中的使用者數量。

    index.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(`資料庫中共有 ${count} 個使用者。`);
    
  9. 執行並測試應用

    使用 bun run 執行指令碼。每次執行都會建立一個新使用者。

    terminal
    bun run index.ts
    
    Text
    資料庫中共有 1 個使用者。
    
    terminal
    bun run index.ts
    
    Text
    資料庫中共有 2 個使用者。
    
    terminal
    bun run index.ts
    
    Text
    資料庫中共有 3 個使用者。
    

Prisma Postgres 現已在 Bun 中完成設定。繼續開發應用時,請參考官方 Prisma Postgres 文件。