@auth/mongodb-adapter
Official MongoDB adapter for Auth.js / NextAuth.js.
Installationβ
- npm
- yarn
- pnpm
npm install @auth/mongodb-adapter mongodb
yarn add @auth/mongodb-adapter mongodb
pnpm add @auth/mongodb-adapter mongodb
MongoDBAdapterOptionsβ
This is the interface of the MongoDB adapter options.
Propertiesβ
collections?β
collections:
object
The name of the MongoDB collections.
Type declarationβ
Member | Type |
---|---|
Accounts ? | string |
Sessions ? | string |
Users ? | string |
VerificationTokens ? | string |
databaseName?β
databaseName:
string
The name you want to give to the MongoDB database
MongoDBAdapter()β
Setupβ
The MongoDB adapter does not handle connections automatically, so you will have to make sure that you pass the Adapter a MongoClient
that is connected already. Below you can see an example how to do this.
Add the MongoDB clientβ
// This approach is taken from https://github.com/vercel/next.js/tree/canary/examples/with-mongodb
import { MongoClient } from "mongodb";
if (!process.env.MONGODB_URI) {
throw new Error('Invalid/Missing environment variable: "MONGODB_URI"');
}
const uri = process.env.MONGODB_URI;
const options = {};
let client;
let clientPromise: Promise<MongoClient>;
if (process.env.NODE_ENV === "development") {
// In development mode, use a global variable so that the value
// is preserved across module reloads caused by HMR (Hot Module Replacement).
if (!global._mongoClientPromise) {
client = new MongoClient(uri, options);
global._mongoClientPromise = client.connect();
}
clientPromise = global._mongoClientPromise;
} else {
// In production mode, it's best to not use a global variable.
client = new MongoClient(uri, options);
clientPromise = client.connect();
}
// Export a module-scoped MongoClient promise. By doing this in a
// separate module, the client can be shared across functions.
export default clientPromise;
Configure Auth.jsβ
import NextAuth from "next-auth"
import { MongoDBAdapter } from "@auth/mongodb-adapter"
import clientPromise from "../../../lib/mongodb"
// For more information on each option (and a full list of options) go to
// https://authjs.dev/reference/providers/oauth
export default NextAuth({
adapter: MongoDBAdapter(clientPromise),
...
})
MongoDBAdapter(
client
:Promise
<MongoClient
>,options
:MongoDBAdapterOptions
={}
):Adapter
Parametersβ
Parameter | Type |
---|---|
client | Promise <MongoClient > |
options | MongoDBAdapterOptions |
Returnsβ
Adapter