Drizzle ORM 适配器
资源
设置
安装
npm install drizzle-orm @auth/drizzle-adapter
npm install drizzle-kit --save-dev
环境变量
AUTH_DRIZZLE_URL=postgres://postgres:[email protected]:5432/db
配置
要使用此适配器,您必须在项目中设置 Drizzle ORM 和 Drizzle Kit。Drizzle 提供了一个简单的 快速入门指南。有关更多详细信息,请按照 Drizzle 文档了解您各自的数据库(PostgreSQL、MySQL 或 SQLite)。总而言之,该设置应该看起来像这样。
- 创建您的模式文件,基于以下模式之一。
- 将支持的数据库驱动程序安装到您的项目中,例如
@libsql/client
、mysql2
或postgres
。 - 创建一个
drizzle.config.ts
文件。 - 使用类似
drizzle-kit generate:pg
的命令从您的模式文件生成初始迁移。 - 使用
migrate()
函数应用迁移,或使用类似drizzle-kit push:pg
的命令将更改直接推送到您的数据库。 - 如果您的模式与默认模式不同,请将它们作为第二个参数传递给适配器。
模式
适配器设置
./auth.ts
import NextAuth from "next-auth"
import { DrizzleAdapter } from "@auth/drizzle-adapter"
import { db } from "./schema.ts"
export const { handlers, auth, signIn, signOut } = NextAuth({
adapter: DrizzleAdapter(db),
providers: [],
})
传递您自己的模式
如果您想使用自己的表格,可以将它们作为第二个参数传递给 DrizzleAdapter
。
sessionsTable
是可选的,只有在您使用数据库会话策略时才需要。verificationTokensTable
是可选的,只有在您使用魔法链接提供者时才需要。
auth.ts
import NextAuth from "next-auth"
import Google from "next-auth/providers/google"
import { DrizzleAdapter } from "@auth/drizzle-adapter"
import { db, accounts, sessions, users, verificationTokens } from "./schema"
export const { handlers, auth } = NextAuth({
adapter: DrizzleAdapter(db, {
usersTable: users,
accountsTable: accounts,
sessionsTable: sessions,
verificationTokensTable: verificationTokens,
}),
providers: [Google],
})
迁移您的数据库
现在您的模式在代码中描述了,您需要将您的数据库迁移到您的模式。一个示例 migrate.ts
文件如下所示。有关更多信息,请查看 Drizzle 的迁移 快速入门指南。
migrate.ts
import "dotenv/config"
import { migrate } from "drizzle-orm/mysql2/migrator"
import { db, connection } from "./db"
// This will run migrations on the database, skipping the ones already applied
await migrate(db, { migrationsFolder: "./drizzle" })
// Don't forget to close the connection, otherwise the script will hang
await connection.end()
有关如何使用 Drizzle 管理迁移的完整文档可以在 Drizzle Kit 迁移页面 中找到。