2

我想将 app.js 中的其他数据传递给 express-resource 路由,但我还没有弄清楚。你会怎么做?请注意,我正在使用 express-resource

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

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

谢谢

4

1 回答 1

1

这是我能想到的三种方法。如果我对您的具体问题知之甚少,听起来中间件可能是解决问题的方法。

使用全局app变量

app.set使用in创建一个值app.js,然后使用app.getin检索它user.js

使用模块

将信息存储在一个独立的模块中,然后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");

(也许检查一下?)

使用中间件

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

//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

于 2013-08-31T07:30:35.157 回答