SaveLolliPoP
@SaveLolliPoP
1 / 0 = ∞

Как экспортировать модуль ACL?

2 дня мучаюсь с экспортом модуля ACL, поисковик молчит в решении этих проблем. Есть аналогичные темы на других форумах, но так решение и не найдено, хотя я уверен что это возможно!

Суть вопроса:
По инструкция ACL его необходимо инициализировать внутри mongoose.conect:

const mongoose          = require('mongoose');
var node_acl = require('acl');

exports.connect = function (done) {
  mongoose.connect(url, {useCreateIndex: true, useNewUrlParser: true}, function (err, db) {
    if (err) {
      console.log('Ошибка запуска базы')
      return done(err);
    }
    var acl = new node_acl( new node_acl.mongodbBackend(mongoose.connection.db, 'acl_') );
    console.log('Подключились к базе данных');
    done();
  });
};


При таком подключении все работает шикарно, внутри mongoose.connect выполняются все методы ACL. Но вот как можно экспортировать сам ACL в другой модуль?
Если инициализировать acl после mongoose.connect:
exports.connect = function (done) {
  mongoose.connect(url, {useCreateIndex: true, useNewUrlParser: true}, function (err, db) {
    if (err) {
      console.log('Ошибка запуска базы')
      return done(err);
    }
    var acl = new node_acl( new node_acl.mongodbBackend(mongoose.connection.db, 'acl_') );
    console.log('Подключились к базе данных');
    done();
  });
};
var conn    = mongoose.connection;
var acl = new node_acl( new node_acl.mongodbBackend(conn.db, 'acl_') );


То по естественны причинам conn.db === undefined, и поэтому инициализация ACL будет провальной.

Читая всякие форумы тегом ACL я наткнулся на возможное решение этой проблемы:
Оберните aclв функцию, если вы вызываете результаты опроса или оберните соединение в Promise, который экспортируется


Вроде звучит понятно, но на практике я не смог это все реализовать.

Если кто то сталкивался с этой проблемой прошу рассказать как вы ее решили. Если у кого то есть понимание как мне помочь, прошу помочь кусками кода, тк со слов могу понять но не смогу реализовать.
Как можно экспортировать данный модуль?
  • Вопрос задан
  • 64 просмотра
Решения вопроса 1
SaveLolliPoP
@SaveLolliPoP Автор вопроса
1 / 0 = ∞
module.exports = new Promise( (resolve, reject) => {
    mongoose.connect(url, {useCreateIndex: true, useNewUrlParser: true}, function (err, db) {
        var acl = new node_acl(new node_acl.mongodbBackend(mongoose.connection.db, 'acl_'));
        resolve(acl);
    });
})
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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