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

MongoDB Adapter

리소스

설정

설치

npm install @auth/mongodb-adapter mongodb

환경 변수

MONGODB_URI=

설정

./auth.ts
import NextAuth from "next-auth"
import { MongoDBAdapter } from "@auth/mongodb-adapter"
import client from "./lib/db"
 
export const { handlers, auth, signIn, signOut } = NextAuth({
  adapter: MongoDBAdapter(client),
  providers: [],
})

MongoDB 어댑터는 연결을 자동으로 처리하지 않기 때문에, 어댑터에 이미 연결된 MongoClient를 전달해야 합니다.

MongoDB 클라이언트 추가하기

lib/db.ts
// 이 접근 방식은 https://github.com/vercel/next.js/tree/canary/examples/with-mongodb에서 가져왔습니다.
import { MongoClient, ServerApiVersion } from "mongodb"
 
if (!process.env.MONGODB_URI) {
  throw new Error('유효하지 않거나 누락된 환경 변수: "MONGODB_URI"')
}
 
const uri = process.env.MONGODB_URI
const options = {
  serverApi: {
    version: ServerApiVersion.v1,
    strict: true,
    deprecationErrors: true,
  },
}
 
let client: MongoClient
 
if (process.env.NODE_ENV === "development") {
  // 개발 모드에서는 전역 변수를 사용하여 HMR(Hot Module Replacement)로 인한 모듈 재로드 시에도 값을 유지합니다.
  let globalWithMongo = global as typeof globalThis & {
    _mongoClient?: MongoClient
  }
 
  if (!globalWithMongo._mongoClient) {
    globalWithMongo._mongoClient = new MongoClient(uri, options)
  }
  client = globalWithMongo._mongoClient
} else {
  // 프로덕션 모드에서는 전역 변수를 사용하지 않는 것이 좋습니다.
  client = new MongoClient(uri, options)
}
 
// 모듈 범위의 MongoClient를 내보냅니다. 이를 별도의 모듈에서 수행함으로써 클라이언트를 여러 함수에서 공유할 수 있습니다.
export default client
Auth.js © Balázs Orbán and Team - 2025