| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- 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;
|