import mongoose from 'mongoose'; const MONGODB_URI = process.env.MONGODB_URI || 'mongodb://localhost:27017/nextjs-app'; if (!MONGODB_URI) { throw new Error('Please define the MONGODB_URI environment variable inside .env.local'); } interface MongooseCache { conn: typeof mongoose | null; promise: Promise | null; } declare global { var mongoose: MongooseCache | undefined; } const cached: MongooseCache = global.mongoose || { conn: null, promise: null }; if (!global.mongoose) { global.mongoose = cached; } async function connectDB(): Promise { if (cached.conn) { return cached.conn; } if (!cached.promise) { const opts = { bufferCommands: false, }; cached.promise = mongoose.connect(MONGODB_URI, opts).then((mongoose) => { return mongoose; }); } try { cached.conn = await cached.promise; } catch (e) { cached.promise = null; throw e; } return cached.conn; } export default connectDB;