1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- import { MongoClient } from 'mongodb';
- import mongoose from 'mongoose';
-
- export async function connectToDatabase() {
- const client = await MongoClient.connect(process.env.MONGODB_URI);
-
- return client;
- }
-
- 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;
|