//config.json
{
"Tenants": {
"5c061f432c9e9e499325b": {
"dbConfig": "mongodb://admin:Password@IP/DBname",
"dbName": "DBname",
},
"5c0432ebabb6c9e9e499325b": {
"dbConfig": "mongodb://admin:Password@IP/DBname",
"dbName": "DBname",
},
"5c061f43bb6c9e9e499325b": {
"dbConfig": "mongodb://admin:Password@IP/DBname",
"dbName": "DBname",
}
},
}
//ModelFactory.js
var mongoose = require("mongoose");
var models = [];
var conns = [];
var path = __dirname + "\\models";
var config = require("config");
function factory(tenant) {
let dbName = config.get("Tenants." + tenant + ".dbName");
let dbConnection = config.ge`enter code here`t("Tenants." + tenant + ".dbConfig");
if (conns[dbName]) {
} else {
conns[dbName] = mongoose.createConnection(dbConnection);
}
if (models[dbName]) {
} else {
var instanceModels = [];
var schemas = ["users","products"];
schemas.forEach(function (models) {
instanceModels[models] = conns[dbName].model(models, require([path, models].join("\\")));
});
// DB name and tenant ID also pushing in the same object
//instanceModels["tenantID"] = tenant;
//instanceModels["db"] = conns[dbName];
models[dbName] = instanceModels;
}
return models[dbName];
}
module.exports = factory;
// API端点
exports.users = function (req, res) {
var models = modelFactory(req.headers.tenantid);
models.User.find() //query