Каков наилучший способ открыть постоянное (монго) соединение с базой данных в NodeJS - PullRequest
6 голосов
/ 25 мая 2011

Я использую драйверы node-mongodb-native и ищу способ открыть постоянное соединение с базой данных, а не открывать / закрывать его каждый раз.

Упрощенное соединение может выглядеть следующим образом ...

var DB = new mongo.Db('vows', new mongo.Server("127.0.0.1", 27017, {})),
    connection = DB.open(function(err, db) {
       // Here we have access to db
    });

Как сделать объект db доступным для любого модуля в моем приложении? Вместо того, чтобы открывать соединение для каждого модуля в отдельности?

Можно ли это сделать с помощью module.exports? Или глобальная переменная?

Ответы [ 2 ]

5 голосов
/ 12 марта 2012

Мое решение:

getClient = function(cb) {
    if(typeof client !== "undefined") {
        return cb(null, client);
    } else {
        db.open(function(err, cli) {
            client = cli;
            getClient(cb);
        });
    }
}

Теперь вместо

db.open(function(err, client) {
    ...stuff...
});

Do:

getClient(function(err, client) {
    ...stuff...
});

Ваш первый вызов БД открывает соединение, остальные используютэто соединение.

Кстати: предложения по проверке того, что клиент еще жив?

1 голос
/ 25 мая 2011

Редактировать: не используйте мангуста, используйте что-то вроде mongo-col или mongo-client. Затем откройте один клиент в вашем приложении. У меня есть ./client.js файл, который экспортирует правильно открытый и настроенный клиент Монго.


Mongoose - это прочная абстракция на вершине mongodb, которая позволит вам легче обращаться с mongodb. Это стоит посмотреть.

Что вы действительно хотите сделать, так это открывать свой клиент каждый раз, когда вы что-то делаете с Монго.

У вас нет открытого соединения с любой другой базой данных.

Просто поместите ваш DB в модуль вместе с некоторыми функциями помощника / оболочки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...