import { MongoClient } from 'mongodb'; import mongoose from 'mongoose'; export async function connectToDatabase() { const client = await MongoClient.connect(process.env.MONGODB_URI!); return client; } declare global { var mongoose: any; } const MONGODB_URI = process.env.MONGODB_URI; if (!MONGODB_URI) { throw new Error( 'Please define the MONGODB_URI environment variable inside .env.local' ); } /** * Global is used here to maintain a cached connection across hot reloads * in development. This prevents connections growing exponentially * during API Route usage. */ let cached = global.mongoose; if (!cached) { cached = global.mongoose = { conn: null, promise: null }; } async function dbConnect() { if (cached.conn) { return cached.conn; } if (!cached.promise) { const opts = { bufferCommands: false, }; cached.promise = mongoose.connect(MONGODB_URI!, opts).then((mongoose) => { return mongoose; }); } cached.conn = await cached.promise; return cached.conn; } export default dbConnect;