SQLite

将 Better Auth 与 SQLite 集成。

SQLite 是一个轻量级、无服务器、自包含的 SQL 数据库引擎,广泛用于应用中的本地数据存储。
查看更多信息请访问 这里。

示例用法

Better Auth 支持多种 SQLite 驱动。请选择最适合您环境的驱动:

Better-SQLite3(推荐)

Node.js 中最流行且稳定的 SQLite 驱动:

auth.ts
import { betterAuth } from "better-auth";
import Database from "better-sqlite3";

export const auth = betterAuth({
  database: new Database("database.sqlite"),
});

欲了解更多信息,请参考 Kysely 文档中的 SqliteDialect

Node.js 内置 SQLite(实验性)

node:sqlite 模块仍处于实验阶段,可能随时发生变化。需要 Node.js 22.5.0 或更高版本。

从 Node.js 22.5.0 开始,您可以使用内置的 SQLite 模块:

auth.ts
import { betterAuth } from "better-auth";
import { DatabaseSync } from "node:sqlite";

export const auth = betterAuth({
  database: new DatabaseSync("database.sqlite"),
});

使用 Node.js SQLite 运行您的应用:

node your-app.js

Bun 内置 SQLite

使用 bunx 并添加 --bun 标志执行 CLI 命令,防止出现无法识别 bun:sqlite 模块相关的类型错误,例如:bunx --bun auth@latest generate

您还可以使用 Bun 内置的 SQLite 模块,语法与 Node.js 版本类似:

auth.ts
import { betterAuth } from "better-auth";
import { Database } from "bun:sqlite";

export const auth = betterAuth({
  database: new Database("database.sqlite"),
});

架构生成与迁移

Better Auth CLI 允许您根据 Better Auth 配置和插件生成或迁移数据库架构。

SQLite 架构生成

SQLite 架构迁移

✅ 支持✅ 支持
npx auth@latest migrate
npx auth@latest generate

联结(实验性)

数据库联结在 Better-Auth 需要从多个表中一次性获取相关数据时非常有用。
/get-session/get-full-organization 等端点极大地受益于此功能,性能可提升 2 到 3 倍,具体取决于数据库延迟。

Kysely SQLite 方言自版本 1.4.0 起内置支持联结。
若要启用此功能,需要在您的 auth 配置中将 experimental.joins 选项设置为 true

auth.ts
export const auth = betterAuth({
  experimental: { joins: true }
});

启用此功能后,可能需要执行迁移操作。

其他信息

SQLite 通过 Kysely 适配器在底层支持,Kysely 支持的任何数据库同样受到支持。(点击这里了解更多)

如果您在寻求性能提升或优化建议,请查看我们的 性能优化指南