跳至内容
从 NextAuth.js v4 迁移?阅读 我们的迁移指南.

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 文档了解您各自的数据库(PostgreSQLMySQLSQLite)。总而言之,该设置应该看起来像这样。

  1. 创建您的模式文件,基于以下模式之一。
  2. 将支持的数据库驱动程序安装到您的项目中,例如 @libsql/clientmysql2postgres
  3. 创建一个 drizzle.config.ts 文件
  4. 使用类似 drizzle-kit generate:pg 的命令从您的模式文件生成初始迁移。
  5. 使用 migrate() 函数应用迁移,或使用类似 drizzle-kit push:pg 的命令将更改直接推送到您的数据库。
  6. 如果您的模式与默认模式不同,请将它们作为第二个参数传递给适配器。

模式

适配器设置

./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 迁移页面 中找到。

Auth.js © Balázs Orbán 和团队 -2024