传递变量来表达3条路线

时间:2012-08-19 22:34:29

标签: node.js express

我有一个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');
    }
  });
};

我已经看过一些与此相关的帖子,但没有一个真正解决了我正在寻找的问题。我知道我可以在一个函数中包装路由,但是如果可能的话,我想要另一种方法来保持我的代码。

2 个答案:

答案 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=...