跳到主要內容

本地開發

Prisma Accelerate 透過整合的連線池和全域資料庫快取,有效率地擴展生產環境流量。

在開發環境中,您可能希望使用本地資料庫以降低成本。此外,您可以考慮一次性地使用 Accelerate 客戶端擴充功能擴展 Prisma Client,以便在開發中使用本地資料庫,在生產環境中使用啟用 Accelerate 連線池和快取功能的託管資料庫。這樣可以消除在開發和生產環境之間切換客戶端的條件邏輯需求。

本指南將說明如何在開發環境中使用帶有本地資料庫的 Prisma Accelerate 客戶端擴充功能。

在開發和生產環境中使用 Prisma Accelerate 客戶端擴充功能


Using Prisma Accelerate client extension in development

Accelerate 無法與本地資料庫一起運作。然而,在開發環境中,您仍然可以使用帶有 Accelerate 客戶端擴充功能的 Prisma Client。此設定不會提供 Accelerate 的連線池和快取功能。

以下步驟概述如何在本地 PostgreSQL 資料庫中使用 Prisma ORM 和 Prisma Accelerate。

  1. 使用您的本地資料庫連線字串更新 DATABASE_URL 環境變數

    DATABASE_URL="postgres://username:password@127.0.0.1:5432/localdb"
  2. 產生 Prisma Client

    npx prisma generate

    注意:`--no-engine` 標誌僅應在預覽和生產環境中使用。此命令產生不帶 Query Engine 檔案的 Prisma Client artifacts,這需要 Accelerate 連線字串。

  3. 設定帶有 Accelerate 客戶端擴充功能的 Prisma Client

    import { PrismaClient } from '@prisma/client'
    import { withAccelerate } from '@prisma/extension-accelerate'

    const prisma = new PrismaClient().$extends(withAccelerate())

    擴展後的 Prisma Client 實例將使用本地資料庫。因此,Prisma Accelerate 將不會在您的開發環境中用於響應您的 Prisma Client 查詢。

Using Prisma Accelerate client extension in production

如果使用 Accelerate 連線字串作為 DATABASE_URL 環境變數,Prisma Client 將通過 Accelerate 路由您的查詢。

在邊緣函式中本地使用 Prisma Accelerate

當在您的開發環境中使用邊緣函式時,例如 Vercel 的邊緣運行時,請如下更新您的 Prisma Client 導入

import { PrismaClient } from '@prisma/client/edge'

通常,邊緣函式環境缺乏對現有 API 的原生支援,這些 API 啟用基於 TCP 的資料庫連線。Prisma Accelerate 提供了一個連線字串,允許通過 HTTP 查詢您的資料庫,HTTP 協議在所有邊緣運行時中都受到支援。