Every MERN project starts the same way.

You copy-paste a connectDB function from an old repo. You write a schema with no validation. Three months later you're debugging duplicate connections in production.

Here's the exact Mongoose setup I use in every Next.js project now — no more guessing.

1. The Connection Caching Pattern

Next.js reuses modules across hot reloads and serverless invocations. Without caching, you'll open a new MongoDB connection on every request.