Prisma

将 Better Auth 与 Prisma 集成。

Prisma ORM 是一个开源的数据库工具包,通过提供类型安全的查询构建器和直观的数据建模界面,简化了应用程序中的数据库访问和管理。

在开始之前,请确保您已经安装并配置了 Prisma。更多信息,请参见 Prisma 文档

安装

要使用 Prisma 适配器,您需要安装 @better-auth/prisma-adapter 包:

npm install @better-auth/prisma-adapter

使用示例

您可以使用 Prisma 适配器如下连接到您的数据库。

auth.ts
import { betterAuth } from "better-auth";
import { prismaAdapter } from "better-auth/adapters/prisma";
import { PrismaClient } from "@prisma/client";

const prisma = new PrismaClient();

export const auth = betterAuth({
  database: prismaAdapter(prisma, {
    provider: "sqlite",
  }),
});

从 Prisma 7 开始,output 路径字段是必需的。如果您在 schema.prisma 文件中配置了自定义的输出路径(例如,output = "../src/generated/prisma"),请确保从该位置而非 @prisma/client 导入 Prisma 客户端。更多信息,请参见这里

模式生成与迁移

Better Auth CLI 允许您基于 Better Auth 配置和插件生成或迁移数据库模式。

Prisma 模式生成

Prisma 模式迁移

✅ 支持❌ 不支持
模式生成
npx auth@latest generate

关联查询(实验性)

当 Better Auth 需要在单个查询中从多个表获取相关数据时,数据库关联查询非常有用。 诸如 /get-session/get-full-organization 等端点极大地受益于此功能, 根据数据库延迟情况,性能提升可达 2 到 3 倍。

Prisma 适配器从 1.4.0 版本开始原生支持关联查询。 要启用此功能,需要在您的 auth 配置中将 experimental.joins 选项设置为 true

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

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

请确保您的 Prisma 模式中已定义必要的关联关系。 如果在您的 Prisma 模式中看不到任何关联关系,您可以使用 @relation 指令手动添加, 或运行我们最新的 CLI 版本 npx auth@latest generate 来生成带有关联的 Prisma 模式。

其他信息