数据库
了解数据库选项以及如何为项目配置数据库
数据库
本文档涵盖了数据库的创建、初始化、迁移和连接到数据库,以及如何使用 Drizzle ORM。
本文主要介绍的是 Postgres 类型数据库的创建和配置,即如果你使用的是 main 分支或者 cloudflare 分支,请参考本文档。
如果你使用的是 cloudflare-d1 分支,即使用 Cloudflare D1 数据库,请参考 Cloudflare 部署(使用 D1 数据库)。
设置
项目使用 PostgreSQL 作为数据库系统,使用 Drizzle ORM 进行数据库访问和管理。
创建数据库
推荐使用托管的 PostgreSQL 数据库服务,它们提供简单的设置和管理,并且通常包含足够入门的免费套餐。
Neon(推荐)
Neon 是一个具有出色的开发者体验的 PostgreSQL 数据库服务,它是小型项目的绝佳选择。
设置步骤:
- 在 neon.tech 创建账户
- 创建新项目
- 创建数据库
- 从仪表盘获取连接字符串
- 将连接字符串作为
DATABASE_URL添加到.env文件中
您可以在此文档中找到有关如何设置 Neon 的更多信息。
Supabase
Supabase 提供具有身份验证和存储等附加功能的 PostgreSQL 数据库,它是中大型项目的绝佳选择。
设置步骤:
- 在 supabase.com 创建账户
- 创建新项目
- 点击
Connect按钮 - 在
Transaction pooler部分获取连接字符串 - 将连接字符串作为
DATABASE_URL添加到.env文件中
您可以在此文档中找到有关如何设置 Supabase 的更多信息,或查看 Supabase 上的连接文档。
初始化数据库
LandingMore 使用 Drizzle ORM 与数据库交互。您可以通过运行以下命令初始化数据库:
这将生成数据库迁移文件,并将数据库架构迁移到数据库中执行初始化。
如果您正在设置环境,现在您可以回到环境配置文档并继续。本文档的其余部分可以稍后阅读。
环境配置
设置环境变量
创建数据库(其他选项)
其他数据库托管服务
您可以在 Drizzle ORM 文档中找到有关其他数据库选项的更多信息。
- Vercel Postgres
- Prisma Postgres
- AWS RDS(PostgreSQL)
- Google Cloud SQL(PostgreSQL)
- Azure Database for PostgreSQL
自托管 PostgreSQL
Docker
您可以在 Docker 容器中运行 PostgreSQL 进行本地开发:
然后使用此连接字符串:
您可以在此文档中找到有关如何在本地设置 PostgreSQL 的更多信息。
本地安装
直接在您的机器上安装 PostgreSQL:
- 从 postgres.org 下载或使用包管理器
- 安装并设置密码
- 创建数据库
然后使用此连接字符串:
使用 Drizzle ORM
模板使用 Drizzle ORM,专注于类型安全和开发者体验的 ORM,Drizzle 支持与各种数据库和提供商兼容。
当前配置
目前,项目配置为使用 postgres-js 依赖库,以便更好地兼容各种数据库和运行环境:
数据库架构
数据库架构在 src/db/schema.ts 中,使用 Drizzle 的架构定义语法:
您可以在下图中看到数据库的架构:
使用其他数据库提供商
Drizzle ORM 支持多个数据库提供商。如果您想使用不同的提供商:
- 安装适当的 Drizzle 适配器包
- 更新
src/db/index.ts以使用正确的驱动程序 - 如有必要,调整
src/db/schema.ts中的架构
示例:使用 MySQL
示例:使用 SQLite
有关 Drizzle ORM 及其适配器的更多信息,请参考 Drizzle ORM 文档。
如果您使用不同的数据库类型,您需要更新 src/lib/auth.ts 文件以使用正确的驱动程序,具体参考 Better Auth 文档。
如果您使用的是 Cloudflare D1 数据库,请参考文档 Cloudflare 部署(使用 D1 数据库)。
连接到数据库
您可以运行 pnpm db:studio 打开数据库工作台,在开发环境中查看和管理数据库数据。
这个命令根据 drizzle.config.ts 文件中的配置,连接到对应的数据库,并打开数据库工作台。
常见问题
连接问题
如果您在连接数据库时遇到问题:
- 检查您的
DATABASE_URL格式是否正确 - 确保您的 IP 在数据库防火墙设置中被允许
- 验证数据库用户具有正确的权限
- 检查是否有任何网络限制
架构迁移问题
如果您在数据库迁移时遇到问题:
- 检查您的架构定义是否有错误
- 确保您的迁移脚本格式正确
- 尝试手动运行迁移以查看详细错误
有关更详细的帮助,请参考 Drizzle ORM 文档。
数据库成本问题
如果你使用的是Neon数据库服务,你可能需要注意设置AutoScaling,以避免产生过多的费用账单。
参考资料
- Neon
- Supabase
- Drizzle ORM
- Supabase | 使用 Drizzle 连接
- 使用 Drizzle 的数据库连接
- Drizzle 与 Neon Postgres
- Drizzle 与 Supabase Postgres
- Drizzle 与 Vercel Edge Functions
- Drizzle | 如何在本地设置 PostgreSQL
- 在 Cloudflare Workers 中使用 Neon
下一步
现在您了解了如何在 LandingMore 中设置数据库,您可能想要探索这些相关功能: