Node.js变量仅用于当前请求?

Lid*_*oku 0 session session-variables node.js

我是Node.js的新手,我想知道除了session()之外,我是否可以使用"存储"来存储当前请求的变量?

我有一个基于Authorization标头的API,以及一个存储在Redis中的有效标记池.

因此,我没有会议,也不想.

但是我希望在此请求期间存储变量以供进一步使用.例如,我想存储与Redis中找到的令牌相对应的user_id,以便我可以在任何我想要的地方使用它.

如果我这样做:

app = express(); app.user_id = 1;

没关系,或者我的user_id会变成全局应用程序处理的所有请求吗?(简而言之:是为服务器处理的每个请求实例化的app,还是持久的?)

如果这不行,我怎么能在没有会话的情况下实现这样的目标呢?

感谢您的任何帮助 :)

dyl*_*nts 5

app处理所有的请求,并且将只在启动时创建一次,但req生命只有请求的寿命.请记住,reqExpress中只是一个对象,因此可以赋值.因此,如果您希望允许控制器访问某些值(类似于会话),您可以执行以下操作:

var express = require('express');
var app = express();

// middleware that assigns a value '123' to 'req.user_id'
app.use(function(req, res, next) {
    req.user_id = 123;
    next();
});

// controller which responds with the 'req.user_id'
app.get('/hello', function(req, res){
  res.send('req.user_id: ' + req.user_id);  // responds with req.user_id: 123
});

app.listen(3000, function() {
    console.log('Listening on port 3000');
});
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,我创建的中间件为请求分配了一个值,称为user_id.该值适用于请求的生命周期.您可以执行类似的操作来为其分配动态值,req以便您可以通过控制器访问它.