Обикновено включвам файл с помощни програми на проекта, който съдържа няколко от тези неща, само за да го улесня. Функционира като псевдо глобален, но без много от обичайните проблеми, които глобалните включват.
Например,
projectUtils.js
module.exports = {
initialize: function(next){
// initialization actions, there can be many of these
this.initializeDB(next);
},
initializeDb: function(next){
mongoClient.open(function(err, mongoClient) {
if(err) return next(err);
module.exports.db = mongoClient.db(DB);
next();
});
}
}
app.js
var projectUtils = require('projectUtils');
// (snip)
projectUtils.initialize(function(err) {
if(err) throw err; // bad DB initialization
// After this point and inside any of your routes,
// projectUtils.db is available for use.
app.listen(port);
}
С помощта на асинхронна функция initialize() можете да сте сигурни, че всички връзки към базата данни, I/O на файлове и т.н. са направени преди стартиране на сървъра.