Express-resource将附加数据从app.js传递到路由

时间:2013-08-31 00:01:03

标签: node.js express express-resource

我想将其他数据从app.js传递到快速资源路由,我还没想到。你会怎么做?请注意,我正在使用express-resource

// app.js
var myAddOnData = 'abc';
app.resource('users', './routes/user');

// user.js
exports.index = function (req, res) {
   console.log(myAddOnData);
};

由于

1 个答案:

答案 0 :(得分:1)

这是我能想到的三种方法。如果没有我对你的具体问题知之甚少,听起来中间件可能就是这样做的方式。

使用全局app变量

使用app.js中的app.set创建一个值,然后使用user.js中的app.get检索该值。

使用模块

将信息存储在一个独立的模块中,然后根据需要require()。如果这是在多个实例上运行,您显然希望将值存储到磁盘而不是内存中。

// keystore.js
// -----------
module.exports.set = function(id, val) { /* ... */ };
module.exports.get = function(id) { /* ... */ };


// app.js
// -----------
var ks = require('./keystore');
ks.set = function("userInfo", "abc");
module.exports.get = function(id) { /* ... */ };


// user.js
// -----------
var ks = require('./keystore');
ks.get = function("userInfo", "abc");

(也许请查看pot?)

使用中间件

使用自定义中间件将数据附加到请求对象,然后可以在路由处理程序中访问它。

//app.js
//------
var express = require('express')
  , cookieSessions = require('./cookie-sessions');

var app = express();

app.use(express.cookieParser('manny is cool'));
app.use(cookieSessions('sid'));
// ...

//cookie-sessions.js
//------------------
module.exports = function(name) {
  return function(req, res, next) {
    req.session = req.signedCookies[name] || {};

    res.on('header', function(){
      res.signedCookie(name, req.session, { signed: true });
    });

    next();
  }
}

通过https://gist.github.com/visionmedia/1491756

相关问题