跳到主要內容

Supabase

本指南討論使用 Prisma ORM 和 Supabase 背後的概念,解釋 Supabase 與其他資料庫供應商之間的共同點和差異,並引導您完成設定應用程式以與 Supabase 整合的流程。

什麼是 Supabase?

Supabase 是一個 PostgreSQL 託管服務和開源 Firebase 替代方案,提供構建產品所需的所有後端功能。與 Firebase 不同,Supabase 以 PostgreSQL 為基礎,可以使用 Prisma ORM 直接存取。

要了解更多關於 Supabase 的資訊,您可以查看他們的架構 這裡 和功能 這裡

與其他資料庫供應商的共通點

使用 Prisma ORM 與 Supabase 的許多方面,就像使用 Prisma ORM 與任何其他關聯式資料庫一樣。您仍然可以

特定考量

如果您想使用 Supabase 提供的 連線池功能,您將需要使用透過您的 Supabase 資料庫設定 取得的連線池連線字串,並在您的 DATABASE_URL 環境變數末尾附加 ?pgbouncer=true

.env
# Connect to Supabase via connection pooling with Supavisor.
DATABASE_URL="postgres://postgres.[your-supabase-project]:[password]@aws-0-[aws-region].pooler.supabase.com:6543/postgres?pgbouncer=true"

如果您想使用 Prisma CLI 來對您的資料庫執行其他操作(例如遷移),您需要新增 DIRECT_URL 環境變數,以便在 datasource.directUrl 屬性中使用,這樣 CLI 才能繞過 Supavisor

.env
# Connect to Supabase via connection pooling with Supavisor.
DATABASE_URL="postgres://postgres.[your-supabase-project]:[password]@aws-0-[aws-region].pooler.supabase.com:6543/postgres?pgbouncer=true"

# Direct connection to the database. Used for migrations.
DIRECT_URL="postgres://postgres.[your-supabase-project]:[password]@aws-0-[aws-region].pooler.supabase.com:5432/postgres"

然後您可以更新您的 schema.prisma 以使用新的直接網址

schema.prisma
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
directUrl = env("DIRECT_URL")
}

關於 directUrl 欄位的更多資訊,請參閱這裡

資訊

我們強烈建議除了 DIRECT_URL 之外,還使用 Supavisor 的連線池。您將獲得 Prisma CLI 極佳的開發者體驗,同時允許連線被集中管理,而無需考慮您的部署策略。雖然這並非每個應用程式都絕對必要,但無伺服器解決方案將不可避免地需要連線池。

開始使用 Supabase

如果您有興趣了解更多資訊,Supabase 提供了一份很棒的指南,說明如何將 Supabase 提供的資料庫連接到您的 Prisma 專案,請參閱這裡

如果您在與 Supabase 整合時遇到問題,請查看這些特定的疑難排解提示Prisma 的 GitHub 討論區 以獲得更多協助。