向Express app和req添加自定义属性。最好的方法是什么?

时间:2014-05-17 22:50:48

标签: javascript node.js express

我是否在脚下拍摄自己:

我想在我的Express应用程序中的app和req对象上提供config,core和mean。

我正在使用不在4.x API中的属性。我应该知道什么?

将它们添加为属性是否存在问题?

// express.js
module.exports = function(db, config, meanModules) {

  var app = express();

  // ... 

  // Get mean-core
  var core = require('meanjs-core')(db, config);

  // Attach config, core, and modules to app    <==== POSSIBLE FOOT SHOOTING
  app.config = config;
  app.core = core;
  app.mean = meanModules;

  // Middleware to adjust req
  app.use(function(req, res, next) {
    // Add config, core, and modules to all requests  <==== POSSIBLE FOOT SHOOTING
    req.config = config;
    req.core = core;
    req.mean = meanModules;
    next();
  });

  // ...
}

1 个答案:

答案 0 :(得分:5)

我建议将单个属性附加到可能永远不会发生冲突的应用,并从那里访问所有内容,例如app.myLibrary

app.myLibrary = {config: config, core: core, mean: meanModules};

从路由/中间件中访问app.myLibrary:

req.app.myLibrary

除非中间件中发生的动态因每个请求而异,否则最好只使用req.app.myLibrary访问它。