我有一个ExpressJS 3应用程序,并将我的路由放在一个单独的文件中。我想在路由文件中提供的app.js中声明一些配置 - 在路由定义本身之外。
在我的app.js中,我想做一些如:
app.set('path_to_models', '/path/models/');
然后在我的routes / index.js文件中,我希望能够这样做:
var Product = require(app.get('path_to_models') + 'product');
exports.list = function(req, res){
return Product.find(function (err, products) {
if (!err) {
res.render('product/manage', { products: products });
} else {
res.render('5xx');
}
});
};
我已经看过一些与此相关的帖子,但没有一个真正解决了我正在寻找的问题。我知道我可以在一个函数中包装路由,但是如果可能的话,我想要另一种方法来保持我的代码。
答案 0 :(得分:2)
我只是创建一个单独的config
模块来保存我的配置,并且在需要配置信息的任何模块中,我只需要正常使用它。当一个更松散耦合的方法工作得很好时,为什么要将express拖入混合中。
config.js
exports.pathToModels = "/path/to/models";
routes.js
var config = require("./config");
console.log(config.pathToModels);
答案 1 :(得分:1)
只需将app
作为参数传递给`routes / index.js':
var routes = require('./routes/index.js')(app);
更新:这应该是
var routes = require('./routes/index.js').init(app);
和routes/index.js
:
var app;
exports=function(whichApp) {
更新:这应该是
exports.init=function(whichApp) {
app=whichApp;
// do initialization stuff
return exports;
}
exports.list=...