Какова лучшая практика для соединений MongoDB на Node.js?

Это то, что мне немного неясно (я только начинаю с Node и Mongo), и это действительно касается меня из-за производительности и нагрузки на сервер (что, я думаю, другой вопрос, но я вернусь к этому в конец поста).

Итак, предполагая, что я пишу API с Node.js и Restify, где каждая конечная точка API соответствует функции, я должен:

a) открыть соединение БД и сохранить его в глобальной переменной, а затем просто использовать это в каждой функции?
Пример:

// requires and so on leave me with a db var, assume {auto_reconnect: true}
function openDB() {
    db.open(function(err, db) {
        // skip err handling and so on
        return db;
    }
}

var myOpenDB = openDB(); // use myOpenDB in every other function I have

b) открыть соединение БД, а затем просто положить все в одно гигантское закрытие?
Пример:

// same as above
db.open(function(err, db) {
    // do everything else here, for example:
    server.get('/api/dosomething', function doSomething(req, res, next) { // (server is an instance of a Restify server)
        // use the db object here and so on
    });
}

c) открывать и закрывать БД каждый раз, когда это необходимо?
Пример:

// again, same as above
server.get('/api/something', function doSomething(req, res, next) {
    db.open(function(err, db) {
        // do something
        db.close();
    });
});

server.post('/api/somethingelse', function doSomethingElse(req, res, next) {
    db.open(function(err, db) {
        // do something else
        db.close();
    });
});

Этот последний - то, что я сделал бы из интуиции, но в то же время я не чувствую себя полностью комфортно, делая это. Разве это не слишком напрягает сервер Монго? Особенно, когда (и я надеюсь, что я доберусь до этого) он получит сотни & # x2014; если не тысячи & # x2014; таких звонков?

Заранее спасибо.

Ответы на вопрос(2)

Ваш ответ на вопрос