跳转到内容

数据库

本文档涵盖了数据库的创建、初始化和使用 Drizzle ORM 连接 Cloudflare D1 数据库。

本地 D1 数据库可以在执行数据库初始化命令时自动创建,运行下面命令初始化本地数据库:

bun run db:migrate:local

对于本地开发,您可以使用下面的命令打开 Drizzle Studio 进行本地数据库管理:

bun run db:studio:local

远程 D1 数据库需要手动创建,创建之前需要先配置 Cloudflare API Token。

请先完成 Cloudflare 配置,确保 Token 至少包含 Account > D1 > Edit 权限。

可以通过 Cloudflare 仪表盘或 Wrangler CLI 创建远程 D1 数据库:

  1. 创建新的 D1 数据库:
bunx wrangler d1 create your-database-name
  1. 命令执行成功之后的提问时选择 no,并从命令输出中复制 database_id
  1. 登录 Cloudflare 仪表盘
  2. 导航到 Storage & Databases > D1 SQL Databases
  3. 点击 Create Database
  4. 输入数据库名称,点击 Create
  5. 创建完成后,从数据库详情页复制 Database ID

创建完成后,更新 wrangler.jsonc 文件中的 database_iddatabase_name

wrangler.jsonc

"d1_databases": [
{
"binding": "DB",
"database_name": "your-database-name", // 注意修改这里,更改为你的数据库名称
"database_id": "your-database-id", // 注意修改这里,更改为你的数据库 ID
"migrations_dir": "./src/db/migrations"
}
],

同时将数据库 ID 添加到环境变量文件中:

.env

CLOUDFLARE_DATABASE_ID=your-database-id

执行下面命令初始化远程数据库:

bun run db:migrate:remote

执行下面命令查看和管理远程数据库:

bun run db:studio:remote

如果您正在设置环境,现在可以回到环境配置文档并继续。本文档的其余部分可以稍后阅读。

环境配置设置环境变量


数据库 schema 定义在 src/db/ 目录中:

  • src/db/auth.schema.ts - Better Auth schema(自动生成)
  • src/db/app.schema.ts - 应用程序 schema

数据库包含以下表:

  • Users - 用户账户和资料
  • Sessions - 用户认证会话
  • Accounts - OAuth 账户关联
  • Verification - 邮箱验证令牌
  • API Keys - API 密钥管理
  • Payments - 支付记录和订阅跟踪
  • User Files - 用户上传文件的元数据

ShipSaaS 提供了以下数据库管理命令:

命令 描述
bun run db:generate 生成 Drizzle 迁移文件
bun run db:push 将 schema 变更推送到数据库 (开发阶段使用)
bun run db:studio:local 打开 Drizzle Studio(本地数据库)
bun run db:studio:remote 打开 Drizzle Studio(远程数据库)
bun run db:migrate:local 应用迁移(本地数据库)
bun run db:migrate:remote 应用迁移(远程数据库)
bun run auth:schema:generate 生成 Better Auth schema

现在您了解了如何在 ShipSaaS 中设置数据库,您可能想要探索这些相关功能: