This project provides a simple way to manage multiple MongoDB databases for a multi-tenant application using Mongoose.
npm install mongoose
const MongoDBManager = require("./mongodb-manager");
await MongoDBManager.addDatabase(
"tenant1",
"mongodb://localhost:27017/tenant1"
);
await MongoDBManager.addDatabase(
"tenant2",
"mongodb://localhost:27017/tenant2"
);
const userSchema = {
name: { type: String, required: true },
email: { type: String, required: true, unique: true },
createdAt: { type: Date, default: Date.now },
};
const productSchema = {
name: String,
price: Number,
inventory: Number,
};
MongoDBManager.getModel("tenant1", "User", userSchema, { timestamps: true });
MongoDBManager.getModel("tenant2", "User", userSchema);
MongoDBManager.getModel("tenant1", "Product", productSchema);
const user1 = await MongoDBManager.create("tenant1", "User", {
name: "John Doe",
email: "john@example.com",
});
const products = await MongoDBManager.find("tenant1", "Product", {
price: { $lt: 100 },
});
await MongoDBManager.updateOne(
"tenant2",
"User",
{ email: "john@example.com" },
{ $set: { name: "Johnny Doe" } }
);
await MongoDBManager.deleteOne("tenant1", "User", {
email: "john@example.com",
});
const results = await MongoDBManager.aggregate("tenant1", "Product", [
{ $match: { price: { $gt: 50 } } },
{ $group: { _id: "$category", total: { $sum: "$price" } } },
]);
await MongoDBManager.disconnect("tenant1");
await MongoDBManager.disconnectAll();
All methods throw errors if the specified database or model is not found. Ensure to use try-catch blocks to handle these errors gracefully.
try {
// ...your code...
} catch (error) {
console.error("Application error:", error);
}
This project is licensed under the MIT License.