@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 например) и не изобретал велосипед.

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

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

Войти через центр авторизации
Похожие вопросы