Учитывая разъяснение, вы можете инициализировать соединение с БД в index.js
и затем передать его в качестве аргумента методам контроллера, которым это необходимо.
Не уверен, что это лучше, но я также использую @Стратегия Thuvarakan: в этом случае ваше соединение инициализируется в индексе, передается модулю БД, а затем используется для доступа к БД по запросу контроллера.
const connection = client.db(config);
const dbAccessLayer = new DbLayer(connection);
const controller = new Controller(dbAccessLayer);
Контроллер будет выглядеть примерно так:
class Controller {
constructor(dbAccess) {}
insertData(data, cb) {
// Make checks, apply business logic
this.dbAccess.insertData(data, cb);
}
...
}
И, наконец, уровень доступа к БД будет выглядеть так:
class DbAccess {
constructor(conn) {}
insertData(data, cb) {
conn.insert(...);
}
...
}