如何在Auth.js/NextAuth.js Drizzle适配器中强制使用snake_case命名规范?
用Drizzle适配器实现snake_case列名
完全可以给所有列名采用snake_case格式,实现方式很直接——因为Drizzle ORM本身就支持自定义数据库列名,Auth.js的Drizzle适配器会直接沿用你定义的schema规则。
具体操作如下:
- 定义Drizzle Schema时指定snake_case列名
编写数据库schema时,直接将列的数据库名称设为snake_case格式,代码里的变量名可保持驼峰(方便开发时使用)。以PostgreSQL为例:
import { pgTable, text, timestamp, varchar, uuid } from "drizzle-orm/pg-core"; // 用户表:所有数据库列名采用snake_case export const users = pgTable("users", { id: uuid("id").primaryKey().defaultRandom(), name: varchar("name", { length: 255 }), email: varchar("email", { length: 255 }).unique().notNull(), emailVerified: timestamp("email_verified"), // 数据库列名为email_verified image: varchar("image", { length: 255 }), }); // 会话表同理 export const sessions = pgTable("sessions", { sessionToken: varchar("session_token", { length: 255 }).primaryKey(), userId: uuid("user_id").notNull().references(() => users.id), expires: timestamp("expires").notNull(), });
- 配置Auth.js适配器
在Auth.js的配置中,直接传入你定义好的schema和Drizzle实例即可。适配器会自动使用schema里指定的snake_case列名与数据库交互,不需要额外的命名规范配置:
import NextAuth from "next-auth"; import { DrizzleAdapter } from "@auth/drizzle-adapter"; import { db } from "./db"; // 你的Drizzle数据库实例 import { users, sessions, verificationTokens, accounts } from "./schema"; export const { handlers, auth, signIn, signOut } = NextAuth({ adapter: DrizzleAdapter(db, { usersTable: users, sessionsTable: sessions, verificationTokensTable: verificationTokens, accountsTable: accounts, }), // 其他Auth.js配置项... });
本质上,Auth.js的Drizzle适配器并不强制列名格式,完全依赖你定义的Drizzle Schema。只要schema里的列名是snake_case,适配器就会遵循这个规则操作数据库,完美适配你的需求。
内容的提问来源于stack exchange,提问作者user3357926
相关产品推荐
相关产品推荐

