LogoMkSaaS文档
LogoMkSaaS文档
首页模板介绍入门文档环境配置
网站配置

功能集成

数据库身份验证邮件邮件订阅存储支付积分定时任务AI 功能统计分析通知验证码聊天框联盟营销

自定义

元数据字体主题图片国际化博客文档组件页面落地页用户管理

代码库

代码库IDE 设置项目结构格式化和代码检查更新代码库
X (Twitter)

数据库

了解数据库选项以及如何为项目配置数据库

本文档涵盖了项目可用的数据库选项、如何设置和连接到数据库,以及如何使用 Drizzle ORM。

设置

项目使用 PostgreSQL 作为数据库系统,使用 Drizzle ORM 进行数据库访问和管理。设置设计灵活,允许您使用各种 PostgreSQL 托管选项。

创建数据库

托管 PostgreSQL 是开发和生产环境的推荐方法。它们提供简单的设置、管理,并且通常包含足够入门的免费套餐。

Neon(推荐)

Neon 是一个具有出色的开发者体验的 PostgreSQL 服务,,它是小型项目的绝佳选择。

设置步骤:

  1. 在 neon.tech 创建账户
  2. 创建新项目
  3. 创建数据库
  4. 从仪表盘获取连接字符串
  5. 将连接字符串作为 DATABASE_URL 添加到 .env 文件中
# Neon 连接字符串示例
DATABASE_URL="postgres://user:password@ep-something.us-east-2.aws.neon.tech/database?sslmode=require"

您可以在此文档中找到有关如何设置 Neon 的更多信息。

Neon

Supabase

Supabase 提供具有身份验证和存储等附加功能的 PostgreSQL 数据库,它是中大型项目的绝佳选择。

设置步骤:

  1. 在 supabase.com 创建账户
  2. 创建新项目
  3. 点击 Connect 按钮
  4. 在 Transaction pooler 部分获取连接字符串
  5. 将连接字符串作为 DATABASE_URL 添加到 .env 文件中
# Supabase 连接字符串示例
DATABASE_URL="postgres://postgres:your-password@db.something.supabase.co:6543/postgres"

您可以在此文档中找到有关如何设置 Supabase 的更多信息,或查看 Supabase 上的连接文档。

Supabase

初始化数据库

MkSaaS 使用 Drizzle ORM 与数据库交互。您可以通过运行以下命令初始化数据库:

pnpm run db:generate # 生成 Drizzle 客户端
pnpm run db:migrate # 迁移数据库
npm run db:generate # 生成 Drizzle 客户端
npm run db:migrate # 迁移数据库
yarn db:generate # 生成 Drizzle 客户端
yarn db:migrate # 迁移数据库
bun run db:generate # 生成 Drizzle 客户端
bun run db:migrate # 迁移数据库

这将生成数据库迁移文件,并将数据库架构迁移到数据库中。

您可以在数据库集成文档中找到有关数据库的更多信息。

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

环境配置

设置环境变量


创建数据库(其他选项)

其他数据库托管服务

您可以在 Drizzle ORM 文档中找到有关其他数据库选项的更多信息。

  • Vercel Postgres
  • Prisma Postgres
  • AWS RDS(PostgreSQL)
  • Google Cloud SQL(PostgreSQL)
  • Azure Database for PostgreSQL

自托管 PostgreSQL

Docker

您可以在 Docker 容器中运行 PostgreSQL 进行本地开发:

docker run --name drizzle-postgres -e POSTGRES_PASSWORD=mypassword -d -p 5432:5432 postgres

然后使用此连接字符串:

DATABASE_URL="postgres://postgres:mypassword@localhost:5432/postgres"

您可以在此文档中找到有关如何在本地设置 PostgreSQL 的更多信息。

本地安装

直接在您的机器上安装 PostgreSQL:

  1. 从 postgres.org 下载或使用包管理器
  2. 安装并设置密码
  3. 创建数据库

然后使用此连接字符串:

DATABASE_URL="postgres://your-username:your-password@localhost:5432/database-name"

使用 Drizzle ORM

模板使用 Drizzle ORM,专注于类型安全和开发者体验的 ORM,Drizzle 支持与各种数据库和提供商兼容。

当前配置

目前,项目配置为使用 postgres-js 依赖库,以便更好地兼容各种数据库和运行环境:

src/db/index.ts
import { drizzle } from 'drizzle-orm/postgres-js';

import postgres from 'postgres';
import * as schema from './schema';

let db: ReturnType<typeof drizzle> | null = null;

export async function getDb() {
  if (db) return db;
  const connectionString = process.env.DATABASE_URL!;
  const client = postgres(connectionString, { prepare: false });
  db = drizzle(client, { schema });
  return db;
}

数据库架构

数据库架构在 src/db/schema.ts 中使用 Drizzle 的架构定义语法定义:

src/db/schema.ts
import { pgTable, text, timestamp } from "drizzle-orm/pg-core";

export const user = pgTable("user", {
  id: text("id").primaryKey(),
  name: text('name').notNull(),
  email: text('email').notNull().unique(),
  // ... 其他字段
});

// ... 其他表

您可以在下图中看到数据库的架构:

Structure

使用其他数据库提供商

Drizzle ORM 支持多个数据库提供商。如果您想使用不同的提供商:

  1. 安装适当的 Drizzle 适配器包
  2. 更新 src/db/index.ts 以使用正确的驱动程序
  3. 如有必要,调整 src/db/schema.ts 中的架构

示例:使用 MySQL

src/db/index.ts
// 1. 安装:npm install drizzle-orm mysql2
// 2. 更新 src/db/index.ts
import { drizzle } from 'drizzle-orm/mysql2';
import mysql from 'mysql2/promise';

const connection = await mysql.createConnection(process.env.DATABASE_URL!);
const db = drizzle(connection);

export default db;

示例:使用 SQLite

src/db/index.ts
// 1. 安装:npm install drizzle-orm better-sqlite3
// 2. 更新 src/db/index.ts
import { drizzle } from 'drizzle-orm/better-sqlite3';
import Database from 'better-sqlite3';

const sqlite = new Database('sqlite.db');
const db = drizzle(sqlite);

export default db;

有关 Drizzle ORM 及其适配器的更多信息,请参考 Drizzle ORM 文档。

如果您使用不同的数据库提供商,您需要更新 src/lib/auth.ts 文件以使用正确的驱动程序和架构,您可以在 Better Auth 文档中找到有关如何执行此操作的更多信息。

故障排除

连接问题

如果您在连接数据库时遇到问题:

  1. 检查您的 DATABASE_URL 格式是否正确
  2. 确保您的 IP 在数据库防火墙设置中被允许
  3. 验证数据库用户具有正确的权限
  4. 检查是否有任何网络限制

架构迁移问题

如果您在数据库迁移时遇到问题:

  1. 检查您的架构定义是否有错误
  2. 确保您的迁移脚本格式正确
  3. 尝试手动运行迁移以查看详细错误

有关更详细的帮助,请参考 Drizzle ORM 文档。

参考

  • Drizzle ORM
  • Neon
  • Supabase
  • Supabase | 使用 Drizzle 连接
  • 使用 Drizzle 的数据库连接
  • Drizzle 与 Neon Postgres
  • Drizzle 与 Supabase Postgres
  • Drizzle 与 Vercel Edge Functions
  • Drizzle | 如何在本地设置 PostgreSQL
  • 在 Cloudflare Workers 中使用 Neon

视频教程

下一步

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

身份验证

配置用户身份验证

电子邮件

配置电子邮件服务

邮件订阅

配置邮件列表订阅

环境配置

配置环境变量

Docker

学习如何使用 Docker 部署您的项目

身份验证

学习如何在 MkSaaS 中使用 Better Auth 设置和使用身份验证

目录

设置
创建数据库
Neon(推荐)
Supabase
初始化数据库
创建数据库(其他选项)
其他数据库托管服务
自托管 PostgreSQL
Docker
本地安装
使用 Drizzle ORM
当前配置
数据库架构
使用其他数据库提供商
示例:使用 MySQL
示例:使用 SQLite
故障排除
连接问题
架构迁移问题
参考
视频教程
下一步