Skip to content
Migrating from NextAuth.js v4? Read our migration guide.

MikroORM Adapter

리소스

설정

설치

npm install @mikro-orm/core @auth/mikro-orm-adapter

환경 변수

DATABASE_CONNECTION_STRING=./db.sqlite

설정

./auth.ts
import NextAuth from "next-auth"
import { MikroOrmAdapter } from "@auth/mikro-orm-adapter"
 
export const { handlers, auth, signIn, signOut } = NextAuth({
  adapter: MikroOrmAdapter({
    // MikroORM 옵션 객체 - https://mikro-orm.io/docs/next/configuration#driver
    dbName: process.env.DATABASE_CONNECTION_STRING,
    type: "sqlite",
    debug: true,
  }),
  providers: [],
})

Advanced usage

커스텀 엔티티 전달하기

MikroORM 어댑터는 자체적으로 엔티티 세트를 제공합니다. 이를 확장하고 싶다면, 선택적으로 어댑터에 전달할 수 있습니다.

이 스키마는 MikroORM에서 사용하도록 조정되었으며, 주요 스키마를 기반으로 합니다.

./auth.ts
import config from "config/mikro-orm.ts"
import {
  Cascade,
  Collection,
  Entity,
  OneToMany,
  PrimaryKey,
  Property,
  Unique,
} from "@mikro-orm/core"
import { defaultEntities } from "@auth/mikro-orm-adapter"
 
const type { Account, Session } = defaultEntities
 
@Entity()
export class User implements defaultEntities.User {
  @PrimaryKey()
  id: string = randomUUID()
 
  @Property({ nullable: true })
  name?: string
 
  @Property({ nullable: true })
  @Unique()
  email?: string
 
  @Property({ type: "Date", nullable: true })
  emailVerified: Date | null = null
 
  @Property({ nullable: true })
  image?: string
 
  @OneToMany({
    entity: () => Session,
    mappedBy: (session) => session.user,
    hidden: true,
    orphanRemoval: true,
    cascade: [Cascade.ALL],
  })
  sessions = new Collection<Session>(this)
 
  @OneToMany({
    entity: () => Account,
    mappedBy: (account) => account.user,
    hidden: true,
    orphanRemoval: true,
    cascade: [Cascade.ALL],
  })
  accounts = new Collection<Account>(this)
 
  @Enum({ hidden: true })
  role = "ADMIN"
}
 
export const { handlers, auth, signIn, signOut } = NextAuth({
  adapter: MikroOrmAdapter(config, { entities: { User } }),
})

기본 엔티티 포함하기

MikroORM 설정에서 defaultEntities를 포함하여 마이그레이션 등에 사용할 수 있습니다.

이를 위해 entities 배열에 포함시키면 됩니다.

config/mikro-orm.ts
import { Options } from "@mikro-orm/core"
import { defaultEntities } from "@auth/mikro-orm-adapter"
 
const config: Options = {
  entities: [VeryImportantEntity, ...Object.values(defaultEntities)],
}
 
export default config
Auth.js © Balázs Orbán and Team - 2025