开发指南数据库
数据库
🚀 Cheatsheet (快速执行)
目标: 5分钟内连上数据库,能增删改查用户数据
核心命令:
# 1. 启动数据库管理界面
bun db:studio
# 2. 同步数据库结构
bun db:push
# 3. 填充测试数据
bun db:seed
最简使用:
import { prisma } from '@/lib/database'
// 查询用户
const user = await prisma.user.findUnique({
where: { email: 'user@example.com' }
})
// 创建用户
const newUser = await prisma.user.create({
data: { email: 'new@example.com', name: 'New User' }
})
❓ 为什么要做这件事
对 MVP 的直接好处:
- 用户数据存储: 注册、登录、个人信息都需要数据库
- 业务数据管理: 订单、内容、设置等核心数据
- 类型安全: Prisma 让你不用担心数据类型错误
- 快速开发: 可视化管理界面,不用写 SQL
如果不做会怎样: 数据只能存在内存里,刷新就没了,完全不像个正经产品。
🤔 为什么选择 PostgreSQL + Prisma
我们为什么用这个组合:
- PostgreSQL: 功能强大、开源免费、云服务选择多
- Prisma: 写起来像操作 JavaScript 对象,不用学 SQL
- 类型安全: TypeScript 自动补全,减少 90% 的数据库错误
真实使用体验:
// 😍 Prisma 写法 - 自动补全,不会写错
const user = await prisma.user.findUnique({
where: { email },
include: { organizations: true }
})
// 😤 原生 SQL 写法 - 容易写错,没有提示
const result = await db.query(
'SELECT * FROM users WHERE email = $1', [email]
)
🧠 简要原理 & 最简案例
Prisma 工作原理: 你定义数据结构 → Prisma 生成类型和函数 → 你调用函数操作数据
核心文件位置:
src/lib/database/prisma/schema.prisma
- 定义数据结构src/lib/database/index.ts
- 导出数据库连接
最简示例 - 用户管理:
// 1. Schema 定义 (已经写好了)
model User {
id String @id @default(cuid())
email String @unique
name String?
}
// 2. 实际使用
import { prisma } from '@/lib/database'
// 获取所有用户
const users = await prisma.user.findMany()
// 按 email 查找
const user = await prisma.user.findUnique({
where: { email: 'test@example.com' }
})
// 创建新用户
const newUser = await prisma.user.create({
data: {
email: 'new@example.com',
name: 'New User'
}
})
🛠️ 实际操作步骤
1. 连接数据库 (2分钟)
选择数据库服务 (推荐 Sealos):
# 国内用户推荐 Sealos
DATABASE_URL="postgresql://user:pass@xxx.sealos.io:5432/db"
# 国外用户推荐 Supabase
DATABASE_URL="postgresql://user:pass@xxx.supabase.co:5432/postgres"
2. 本地开发 (1分钟)
# 同步数据库结构
bun db:push
# 打开管理界面
bun db:studio
3. 开始使用 (2分钟)
# 填充一些测试数据
bun db:seed
# 现在可以在 http://localhost:5555 看到数据了
🔧 日常使用命令
开发时最常用:
bun db:studio # 打开可视化管理界面
bun db:push # 同步数据库结构 (开发时用)
bun db:seed # 填充测试数据
部署时用到:
bun db:migrate # 生成迁移文件 (生产环境用)
bun db:deploy # 应用到生产数据库
💡 实用技巧
数据库选择建议
- 本地开发: 用 Docker 启动 PostgreSQL
- 测试/演示: 用 Sealos (国内) 或 Supabase (国外)
- 生产环境: 根据用户位置选择云服务
常见问题快速解决
# 连接失败 → 检查 .env 文件的 DATABASE_URL
# 类型错误 → 运行 bun db:generate
# 数据乱了 → 运行 bun db:reset (开发环境)
查询优化小技巧
// ✅ 一次查询获取关联数据 (快)
const userWithOrgs = await prisma.user.findUnique({
where: { id },
include: { organizations: true }
})
// ❌ 多次查询 (慢)
const user = await prisma.user.findUnique({ where: { id } })
const orgs = await prisma.organization.findMany({ where: { userId: id } })
📎 延伸阅读
官方资源:
- Prisma 官方文档 - 详细的 API 参考
- PostgreSQL 教程 - 数据库深入学习
推荐工具:
- Prisma Studio - 可视化数据库管理
- TablePlus - 数据库客户端工具
云服务推荐:
下一步: 学会数据库后,去看 [API 开发]./api) 来构建后端接口。