38 lines
834 B
TypeScript
38 lines
834 B
TypeScript
import mongoose from "mongoose";
|
|
|
|
const MONGODB_URI = process.env.MONGODB_URI;
|
|
|
|
declare global {
|
|
var mongooseCache: {
|
|
conn: typeof mongoose | null;
|
|
promise: Promise<typeof mongoose> | null;
|
|
}
|
|
}
|
|
|
|
let cached = global.mongooseCache;
|
|
|
|
if (!cached){
|
|
cached = global.mongooseCache = { conn: null, promise: null };
|
|
}
|
|
|
|
export const connectToDatabase = async () => {
|
|
if(!MONGODB_URI){
|
|
throw new Error("MongoDB URI is missing");
|
|
}
|
|
|
|
if(cached.conn) return cached.conn;
|
|
|
|
if(!cached.promise) {
|
|
cached.promise = mongoose.connect(MONGODB_URI, {bufferCommands: false});
|
|
}
|
|
|
|
try{
|
|
cached.conn = await cached.promise;
|
|
}
|
|
catch(err){
|
|
cached.promise = null;
|
|
throw err;
|
|
}
|
|
|
|
console.log(`MongoDB Connected ${MONGODB_URI} in ${process.env.NODE_ENV}`);
|
|
} |