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,則可以使用 內省 功能
- 使用
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 以使用新的直接 URL
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 Discussions以獲取更多幫助。