Next.js Discord

Discord Forum

When My Middleware Runs Mongoose Breaks

Unanswered
Eulophid wasp posted this in #help-forum
Open in Discord
Eulophid waspOP
When this code runs:
import NextAuth from "next-auth";
import authConfig from "./auth.config";
import { apiAuthPrefix, authRoutes, DEFAULT_LOGIN_REDIRECT, publicRoutes } from "./routes";

const { auth } = NextAuth(authConfig);

export default auth(async function middleware(req) {
    const { nextUrl } = req;

    const isSignedIn = !!req.auth;

    const isApiAuthRoute = nextUrl.pathname.startsWith(apiAuthPrefix);
    const isPublicRoute = publicRoutes.includes(nextUrl.pathname);
    const isAuthRoute = authRoutes.includes(nextUrl.pathname);

    if (isApiAuthRoute) {
        return;
    }

    if (isAuthRoute) {
        if (isSignedIn) {
            return Response.redirect(new URL(DEFAULT_LOGIN_REDIRECT, nextUrl));
        }
        return;
    }

    if (!isSignedIn && !isPublicRoute) {
        return Response.redirect(new URL("/auth/sign-in", nextUrl));
    }

    return;
});

export const config = {
    matcher: ["/((?!.+\\.[\\w]+$|_next).*)", "/", "/(api|trpc)(.*)"],
};

This code throws an error that mongoose.models.schools is undefined:
import { SchoolDataSchema } from "@/schemas/mongoose";
import mongoose from "mongoose";

export const SchoolsModel = mongoose.models.schools || mongoose.model("schools", SchoolDataSchema);

0 Replies