Saya biasanya menyertakan file utilitas proyek yang berisi beberapa hal ini, hanya untuk membuatnya mudah. Ini berfungsi sebagai global semu, tetapi tanpa banyak masalah yang biasa terjadi di dunia global.
Misalnya,
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);
}
Dengan menggunakan fungsi asynchronous initialize(), Anda dapat memastikan bahwa semua koneksi database, file I/O, dll., telah selesai sebelum memulai server.