Kontainer-di с монго родным

node.js mongodb

25 просмотра

1 ответ

340 Репутация автора

Я пытаюсь заставить собственный драйвер MongoDB работать с Kontainer-di . Я хочу добавить подключенный клиент (возвращенный из метода connect) в контейнер, чтобы я мог внедрить его непосредственно в контроллеры / службы.

Существует возможность использовать startфункцию, которая возвращает обещание, которое, как я думал, будет работать с нативной функцией соединения Монго. База данных подключена внутри then. Моя проблема в том, что я не уверен, как получить доступ к подключенному клиенту базы данных, чтобы добавить сеанс в контейнер.

Мой код пока выглядит так:

var mongoClient = require('mongodb').MongoClient;
var promise = require('bluebird');

var mongoFactory = function(config) {

    function start() {
        return mongoClient.connect("mongodb://127.0.0.1:27017/test", {promiseLibrary: promise})
            .then(function(database) {
                console.log('mongo connection initialised');
            })
            .catch(function(err) {
                console.error('Error: ', err);
            });
    }

    function stop() {
        db.close();
    }

    return {
        start: start,
        stop: stop
    }

}

module.exports = mongoFactory;
Автор: James Источник Размещён: 18.07.2016 08:26

Ответы (1)


0 плюса

340 Репутация автора

Решение

В случае, если у кого-то есть такая же проблема, как у меня. В итоге я использовал библиотеку mongojs, которая не использует обещания для соединения, поэтому активное соединение можно было легко добавить в контейнер.

Я все еще хотел использовать обещания, а не обратные вызовы для запросов, поэтому я использовал bluebird и его promisifyAllметод.

Автор: James Размещён: 31.07.2016 08:09
Вопросы из категории :
32x32