Mongoose adapter

Adapter for Mongoose provided by the Mongoose adapter package.

import { mongoose } from "@lucia-auth/adapter-mongoose";
const mongoose: (models: {
	User: Model;
	Session: Model | null;
	Key: Model;
}) => InitializeAdapter<Adapter>;
Parameters#

Table names are automatically escaped.

nametypedescription
models.UserModelMongoose model for user collection
models.KeyModelMongoose model for key collection
models.SessionModel | nullMongoose model for session collection - can be null when using alongside a session adapter

Installation#

npm i @lucia-auth/adapter-mongoose
pnpm add @lucia-auth/adapter-mongoose
yarn add @lucia-auth/adapter-mongoose

Usage#

import { lucia } from "lucia";
import { mongoose } from "@lucia-auth/adapter-mongoose";
import mongodb from "mongoose";

// see next section for schema
const User = mongodb.model();
const Key = mongodb.model();
const Session = mongodb.model();

const auth = lucia({
	adapter: mongoose({
		User,
		Key,
		Session
	})
	// ...
});

// handle connection
mongodb.connect(mongoUri, options);

Mongoose models#

You can choose any model names.

User collection#

You can add additional fields to store user attributes.

import mongodb from "mongoose";

const User = mongodb.model(
	"User",
	new mongodb.Schema(
		{
			_id: {
				type: String,
				required: true
			}
		} as const,
		{ _id: false }
	)
);

Key collection#

import mongodb from "mongoose";

const Key = mongodb.model(
	"Key",
	new mongodb.Schema(
		{
			_id: {
				type: String,
				required: true
			},
			user_id: {
				type: String,
				required: true
			},
			hashed_password: String
		} as const,
		{ _id: false }
	)
);

Session collection#

You can add additional fields to store session attributes.

import mongodb from "mongoose";

const Session = mongodb.model(
	"Session",
	new mongodb.Schema(
		{
			_id: {
				type: String,
				required: true
			},
			user_id: {
				type: String,
				required: true
			},
			active_expires: {
				type: Number,
				required: true
			},
			idle_expires: {
				type: Number,
				required: true
			}
		} as const,
		{ _id: false }
	)
);