我使用ExpressJs和Node.js,並把我所有的路由放到'路由'文件夾中。ExpressJS並在單獨的路由文件之間傳遞變量
在服務器上,我做我的DB連接,然後確定我的路線,像這樣:
var routes = require('./routes');
var db;
dbconnect = new mongo.Db(config.mongo_database, new mongo.Server(config.mongo_host, config.mongo_port, {}), {});
dbconnect.open(function (err, db) {
db.authenticate(config.mongo_user, config.mongo_pass, function (err, success) {
if (success) {
//routes/index.js
app.get('/', routes.index);
//routes/users.js
app.get('/users', routes.users);
}
});
});
我想訪問內每個路線JavaScript文件的「DB」的對象。我如何將這個'app.js'文件傳遞給index.js或users.js?
謝謝!
缺點是現在每次你想在控制器中重複使用一個「模塊」時,你必須將它添加到簽名中,最後可能會出現一些控制器需要2個,一個需要3個,另一個需要5個的情況,現在你已經有了一個必須容納最大共同點的簽名。我認爲更好的方法是將你的數據庫行爲封裝在它自己的鬆耦合模塊中。 – 2012-04-02 20:43:19
@BradHarris:這絕對是一個缺點。如果您覺得這一點很重要,那麼保留相同簽名的一種方法是接受帶有參數的對象:'{db:db,foo:foo,bar:bar}'。你的解決方案絕對不是一個很好的解決方法,儘管它有自己的缺點 - 比如單元測試更難。 – 2012-04-25 16:30:10