You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 14:17:42