跳到主要内容

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 以使用新的 direct URL

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 Discussions 以获得更多帮助。