Supabase
本指南討論使用 Prisma ORM 和 Supabase 背後的概念,解釋 Supabase 與其他資料庫供應商之間的共同點和差異,並引導您完成設定應用程式以與 Supabase 整合的流程。
什麼是 Supabase?
Supabase 是一個 PostgreSQL 託管服務和開源 Firebase 替代方案,提供構建產品所需的所有後端功能。與 Firebase 不同,Supabase 以 PostgreSQL 為基礎,可以使用 Prisma ORM 直接存取。
要了解更多關於 Supabase 的資訊,您可以查看他們的架構 這裡 和功能 這裡
與其他資料庫供應商的共通點
使用 Prisma ORM 與 Supabase 的許多方面,就像使用 Prisma ORM 與任何其他關聯式資料庫一樣。您仍然可以
- 使用 Prisma Schema Language 建立資料庫模型
- 在您的 schema 中使用 Prisma ORM 現有的
postgresql
資料庫連接器,以及 Supabase 提供給您的 連線字串 - 如果您在 Supabase 中已經有資料庫 schema,可以使用 Introspection 用於現有專案
- 使用
db push
將 schema 中的變更推送到 Supabase - 在您的應用程式中使用 Prisma Client 與 Supabase 的資料庫伺服器溝通
特定考量
如果您想使用 Supabase 提供的 連線池功能,您將需要使用透過您的 Supabase 資料庫設定 取得的連線池連線字串,並在您的 DATABASE_URL
環境變數末尾附加 ?pgbouncer=true
# 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
# 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
以使用新的直接網址
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 討論區 以獲得更多協助。