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