Skip to content
Migrating from NextAuth.js v4? Read our migration guide.
API reference
@auth/mikro-orm-adapter

@auth/mikro-orm-adapter

Official MikroORM adapter for Auth.js / NextAuth.js.

Installation

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

defaultEntities

Renames and re-exports lib/entities

MikroOrmAdapter()

MikroOrmAdapter<D>(ormOptions, options?): Adapter

Setup

Configure Auth.js to use the MikroORM Adapter:

pages/api/auth/[...nextauth].ts
import NextAuth from "next-auth"
import { MikroOrmAdapter } from "@auth/mikro-orm-adapter"
 
export default NextAuth({
  adapter: MikroOrmAdapter({
    // MikroORM options object. Ref: https://mikro-orm.io/docs/next/configuration#driver
    dbName: "./db.sqlite",
    type: "sqlite",
    debug: process.env.DEBUG === "true" || process.env.DEBUG?.includes("db"),
  }),
  providers: [],
})

Advanced usage

Passing custom entities

The MikroORM adapter ships with its own set of entities. If you’d like to extend them, you can optionally pass them to the adapter.

This schema is adapted for use in MikroORM and based upon our main schema

pages/api/auth/[...nextauth].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 { 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 default NextAuth({
  adapter: MikroOrmAdapter(config, { entities: { User } }),
})

Including default entities

You may want to include the defaultEntities in your MikroORM configuration to include them in Migrations etc.

To achieve that include them in your “entities” array:

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;

Type parameters

Type parameterValue
D extends IDatabaseDriver<Connection>IDatabaseDriver<Connection>

Parameters

ParameterType
ormOptionsOptions<D>
options?Object
options.entities?Partial<lib/entities>

Returns

Adapter

Auth.js © Balázs Orbán and Team - 2024