Menu

数据库集成

借助 Nexty 的自动化数据库适配,你只需要配置一个环境变量 DATABASE_URL,模板就会根据运行平台(Vercel/Netlify/Server)和数据库提供商(Supabase/Neon/自建)自动选择最佳连接参数。

  • 唯一必需环境变量: DATABASE_URL
  • 已内置工具: Drizzle ORM + drizzle-kit(迁移/推送/可视化)与种子数据脚本
  • 自动优化:
    • Serverless(Vercel/Netlify/Lambda)自动降为单连接,避免超限
    • Supabase/Neon 自动启用 SSL
    • Neon + Vercel 自动禁用 prepared statements,避免不兼容问题

使用 supabase

创建数据库

访问 Supabase 官网,注册账号。如果你想用域名邮箱注册,可先完成Resend集成域名邮箱配置

点击 New Project 创建新项目

Supabase new project

记住这一步填写的密码

Supabase create project

将环境变量赋值到 .env 或者 .env.local 文件

connect
copy env

需要用上一步填写的密码替换掉 [YOUR-PASSWORD]

初始化数据库

通过命令初始化数据库和种子数据:

# 初始化数据库
npm run db:migrate
 
# 导入示例定价计划种子数据
npm run db:seed

完成后,即可在数据库看到完整的数据表。

tables

使用 neon

创建数据库

访问 Neon 官网,注册账号。如果你想用域名邮箱注册,可先完成Resend集成域名邮箱配置

点击 Create Project 创建新项目

Supabase new project
Supabase create project

将环境变量赋值到 .env 或者 .env.local 文件

connect
copy env

初始化数据库

通过命令初始化数据库和种子数据:

# 初始化数据库
npm run db:migrate
 
# 导入示例定价计划种子数据
npm run db:seed

完成后,即可在 Supabase 看到完整的数据表。

tables

更新数据库定义

package.json 提供了一些常用的数据库操作命令。

在开发业务功能的时候,需要创建新的数据表或者扩展原有的数据表,只需按照以下步骤执行:

  1. lib/db/schema.ts 更新数据库定义
  2. 执行 npm run db:generate 命令,自动生成迁移文件
  3. 执行 npm run db:migrate 命令,更新迁移文件到数据库

如果你使用自建 Postgres,则可以执行 npm run db:studio 打开可视化页面。

package.json 提供的命令中,还有一项是 "db:push": "drizzle-kit push",当你执行 npm run db:push 的时候,不会生成迁移文件,而是直接更新到数据库,这不是规范的做法,一般不推荐使用这个命令。

自定义 Drizzle 配置

模板拥有根据运行平台和数据库服务商自动创建 Drizzle 配置的能力,自动配置的文件在 lib/db/config.ts。运行环境支持判断 Vercel、netlify、lambda和服务器环境,数据库提供商支持 supabase、neon、aws-rds、gcp-sql 和自建 Postgres。

如果你使用的运行环境或者数据库服务商不在其中,可以很方便地在 lib/db/config.ts 进行扩展。

如果使用服务器部署项目,你可以根据服务器的 CPU 和内存变更最大连接数 max 的值;如果自建 Postgres 或有特定合规要求,也可进行参数覆盖。