how to work lucia-auth with nextjs using javascript and mongoose

I’m trying to integrate lucia-auth with my Next.js application using JavaScript and Mongoose. Here are my mongoose models:

User model:


    import mongoose from 'mongoose';

const userSchema = new mongoose.Schema({
  name: {
    type: String,
    required: true
  },
  email: {
    type: String,
    required: true,
    unique: true
  },
  password: {
    type: String,
    required: true
  },
  cart: {
    items: [
      {
        productId: { type: mongoose.Schema.Types.ObjectId, ref: 'Product', required: true },
        quantity: { type: Number, default: 1, required: true }
      }
    ]
  }
},
  { collection: "User-Collection", versionKey: false }
);

const User = mongoose.models.User || mongoose.model('User', userSchema);

export default User;

Database connection file:

import mongoose from 'mongoose';

const connection = { isConnected: null };

async function connectToDatabase() {
  if (connection.isConnected === 1) {
    console.log('Already connected to the database.');
    return;
  }

  try {
    const db = await mongoose.connect(process.env.DB_URL);
    connection.isConnected = db.connections[0].readyState;
    console.log('Database connected!');
  } catch (error) {
    console.error('mongoose.connect():', error.message);
  }
}

export default connectToDatabase;

Integrating lucia-auth into a Next.js application that utilizes JavaScript and Mongoose for database interactions is quite challenging, as there are no direct examples or documentation available.

The absence of clear examples necessitates a deep dive into the libraries’ source code or seeking assistance from the community to piece together a solution that is both secure and efficient. The goal is to create a user-friendly authentication process that leverages the strengths of Mongoose’s schema-based approach to MongoDB and the flexibility of Next.js’s Server Actions.