@VadimKholodilo

Как правильно передать соединение с базой данных в модель?

Здравствуйте. У меня есть приложение, которое написано с использованием фреймворка Express.
Я не хочу напрямую в маршрутах делать запросы к базе данных. Вместо этого, я хочу создать классы, которые скроют детали реализации (модели). Например, модель пользователя будет иметь следующие функции getById, authorize(login, password), а также некоторые другие.
Вопрос в том, а как передать соединение в эту модель, что бы не открывать соединение при каждом запросе.
Я вижу это так:
const express = require('express);
var users = require('./models/users.js');
const dbDriver = require('db-driver'); / Для данного вопроса какую базу данных я использую не важно
app = express();
dbDriver.connect(host, user, password).then(function(connection) {
users.init(connection); // Передаём объект соединения. Функция init инициализирует внутреннюю переменную, хранящую соединение
app.users = users; // Во всех маршрутах будет видна эта модель через req.local.users
app,listen(3000);
}).catch(e) {
console.log('Unable to start API', e);
});

Как бы вы это сделали?
  • Вопрос задан
  • 63 просмотра
Решения вопроса 1
Robur
@Robur
Знаю больше чем это необходимо
Я бы взял готовую ORM, где над этим всем уже подумали (sequelize например) и не изобретал велосипед.

Если прямо хочется свой велосипед? то ваш подход тоже подойдет.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы