UNPKG

connect2mongodb

Version:

Dynamically Connect to MongoDB databse & close connection.

68 lines (67 loc) 2.77 kB
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; import mongoose from 'mongoose'; import { config } from 'dotenv'; config(); // Just Use MONGO_URI = Your MongoURI In .env but without '' String const userMongoDBLink = process.env.MONGO_URI || process.env.MONGODB_URI; // Caching MongoDB connection let cachedConnection = null; function connect2MongoDB() { return __awaiter(this, arguments, void 0, function* (databaseName = undefined) { if (!userMongoDBLink) { console.error("MongoDB URI is not defined in environment variables."); return false; } const mongoDBUri = databaseName ? `${userMongoDBLink}${databaseName}` : userMongoDBLink; // If connection is already cached, return true if (cachedConnection) { console.log("Using cached MongoDB connection."); return true; } try { // Connection to MongoDB yield mongoose.connect(mongoDBUri); // Caching the MongoDB connection cachedConnection = mongoose.connection; // Connecting with the cached connection cachedConnection.on("connected", () => { console.log("MongoDB connected successfully."); }); cachedConnection.on("error", (err) => { console.error("MongoDB connection error:", err); }); return true; } catch (error) { console.error("Error connecting to MongoDB:", error); return false; } }); } function disconnect2MongoDB() { return __awaiter(this, void 0, void 0, function* () { try { if (!cachedConnection) { console.log("No cached connection to disconnect."); return true; } yield mongoose.disconnect(); cachedConnection = null; console.log("Disconnected from MongoDB! 👋"); return true; } catch (error) { console.log(error); return false; } }); } export { connect2MongoDB, disconnect2MongoDB };