本教程演示如何使用 Drizzle ORM 与 Supabase 数据库 一起使用。每个 Supabase 项目都包括一个完整的 Postgres 数据库。
This guide assumes familiarity with:
- 您应该已经安装了
dotenv
包来管理环境变量。更多关于这个包的信息 在这里
- 您应该已经安装了
postgres
包来连接到 Postgres 数据库。更多关于这个包的信息 在这里
查看 Supabase 文档 来学习如何使用 Drizzle ORM 连接到数据库。
设置 Supabase 和 Drizzle ORM
创建新的 Supabase 项目
您可以在 仪表板 或通过这个 链接 创建新的 Supabase 项目。
设置连接字符串变量
导航至 Database Settings 并复制 Connection String
部分的 URI。确保使用 connection pooling
。记得用您的实际数据库密码替换密码占位符。
将 DATABASE_URL
变量添加到您的 .env
或 .env.local
文件。
阅读更多关于 Connection Pooler 和池模式的 文档。
将 Drizzle ORM 连接到数据库
在 src/db
目录下创建一个 index.ts
文件,并设置数据库配置:
创建表
在 src/db
目录下创建一个 schema.ts
文件,并声明您的表:
设置 Drizzle config 文件
Drizzle config - 一个配置文件,由 Drizzle Kit 使用,包含所有关于您的数据库连接、迁移文件夹和模式文件的信息。
在项目根目录下创建一个 drizzle.config.ts
文件,并添加以下内容:
应用数据库更改
您可以使用 drizzle-kit generate
命令生成迁移,然后使用 drizzle-kit migrate
命令运行它们。
生成迁移:
这些迁移存储在 supabase/migrations
目录中,正如您的 drizzle.config.ts
所指定的。这个目录将会包含更新数据库模式所需的 SQL 文件,以及一个 meta
文件夹,用于存储在不同迁移阶段的数据模式快照。
生成的迁移示例:
运行迁移:
了解更多关于 迁移过程。您也可以使用 Supabase CLI 应用迁移:
- 对于已经存在的表,请手动审查从
npx drizzle-kit generate
生成的迁移文件,并将任何不安全的纯创建语句(例如,CREATE SCHEMA "auth";
)注释或调整,同时确保安全的条件创建语句(例如,CREATE TABLE IF NOT EXISTS "auth"."users"
)得到正确处理。
或者,您可以使用 Supabase CLI 直接将更改推送到数据库:
💡
推送命令适用于您需要在本地开发环境中快速测试新模式设计或更改的情况,允许快速迭代,而无需管理迁移文件的开销。
要使用 Supabase CLI 应用迁移,您应该按照以下步骤操作:
使用 Drizzle Kit 生成迁移:
初始化本地 Supabase 项目:
将它链接到远程项目:
推送更改到数据库:
基本文件结构
这是项目的基本文件结构。在 src/db
目录中,我们有一些数据库相关的文件,包括 index.ts
中的连接和 schema.ts
中的模式定义。
查询示例
例如,我们在 src/db/queries
文件夹中创建表,并将每个操作分离到单独的文件中:插入、选择、更新、删除。
插入数据
在 文档 中了解更多关于插入查询的信息。
选择数据
在 文档 中了解更多关于选择查询的信息。
或者,您可以使用 关系查询语法。
更新数据
在 文档 中了解更多关于更新查询的信息。
删除数据
在 文档 中了解更多关于删除查询的信息。