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