Я пытаюсь создать приложение с несколькими арендаторами (saas), где каждый клиент имеет свою собственную базу данных.
Моя ситуация:
Я создал промежуточное программное обеспечение, которое определяло бы, кто клиент основан на субдомене, а затем извлекает информацию о подключении базы данных клиента из общей базы данных. Я не знаю, как установить объект соединения для этого клиента, чтобы иметь возможность использовать в моих контроллерах. И должен ли я делать это в промежуточном программном обеспечении или контроллере? И если это в модели, как передать строку и параметры подключения (я мог бы использовать сеанс, но я не знаю, как получить доступ к сеансу изнутри модели).
Как сделать следующее?
- Организация: где я могу создать динамическое соединение db для клиента?
- Параметры ввода/передачи соединения с контроллером или моделью (при определении соединения)
- После динамического подключения, как мне получить доступ к нему глобально для этого клиента?
Это пример моего промежуточного ПО, и я хотел бы создать соединение mongoose, которое я хотел бы сделать динамическим (передать информацию о подключении клиента):
function clientlistener() {
return function (req, res, next) {
console.dir('look at my sub domain ' + req.subdomains[0]);
// console.log(req.session.Client.name);
if (req.session.Client && req.session.Client.name === req.subdomains[0]) {
var options = session.Client.options;
var url = session.Client.url
var conn = mongoose.createConnection(url, options);
next();
}
}
}
Как мне получить доступ к этому объекту соединения внутри контроллера? Или из модели?
Спасибо.