Это то, что мне немного неясно (Я только начинаю работать с Node и Mongo ), и это действительно беспокоит меня из-за производительности сервера и нагрузки (, что, я думаю, является другим вопросом, но я вернемся к этому в конце поста ).
Итак, если я пишу API с Node.js и Restify, где каждая конечная точка API соответствует функции, должен ли я:
а)открыть соединение с БД и сохранить его в глобальном var, а затем просто использовать его в каждой функции?
Пример:
// 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
б)открыть соединение с БД, а затем просто поместить все в одно гигантское закрытие?
Пример:
// 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
});
}
с)открывать и закрывать БД каждый раз, когда это необходимо?
Пример:
// 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();
});
});
Последнее — это то, что я сделал бы интуитивно, но в то же время я чувствую себя не совсем комфортно, делая это. Не слишком ли это нагружает сервер Mongo?Особенно, когда (и я надеюсь, что доберусь до этого ), будут сотни, если не тысячи, таких звонков?
Заранее спасибо.