diff options
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/mongodb.ts | 40 |
1 files changed, 8 insertions, 32 deletions
diff --git a/src/lib/mongodb.ts b/src/lib/mongodb.ts index b3cb896..9e7c9bd 100644 --- a/src/lib/mongodb.ts +++ b/src/lib/mongodb.ts @@ -2,43 +2,19 @@ import mongoose from "mongoose"; const MONGODB_URI = process.env.MONGODB_URI; -interface MongooseCache { - conn: typeof mongoose | null; - promise: Promise<typeof mongoose> | null; -} - -declare global { - var mongoose: MongooseCache | undefined; -} - -let cached = global.mongoose; - -if (!cached) { - cached = global.mongoose = { conn: null, promise: null }; -} - async function dbConnect() { if (!MONGODB_URI) { - throw new Error("Please define the MONGODB_URI environment variable inside .env.local"); + throw new Error( + "Please define the MONGODB_URI environment variable inside .env.local" + ); } - if (cached!.conn) return cached!.conn; - - if (!cached!.promise) { - const opts = { bufferCommands: false }; - cached!.promise = mongoose.connect(MONGODB_URI, opts).then((mongoose) => { - return mongoose; - }); + // If the connection is already established, return + if (mongoose.connection.readyState >= 1) { + return; } - - try { - cached!.conn = await cached!.promise; - } catch (e) { - cached!.promise = null; - throw e; - } - - return cached!.conn; + + return mongoose.connect(MONGODB_URI); } export default dbConnect; |
