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