我是Node.js的新手,我想知道除了session()之外,我是否可以使用"存储"来存储当前请求的变量?
我有一个基于Authorization标头的API,以及一个存储在Redis中的有效标记池.
因此,我没有会议,也不想.
但是我希望在此请求期间存储变量以供进一步使用.例如,我想存储与Redis中找到的令牌相对应的user_id,以便我可以在任何我想要的地方使用它.
如果我这样做:
app = express();
app.user_id = 1;
没关系,或者我的user_id会变成全局应用程序处理的所有请求吗?(简而言之:是为服务器处理的每个请求实例化的app,还是持久的?)
如果这不行,我怎么能在没有会话的情况下实现这样的目标呢?
感谢您的任何帮助 :)
在app
处理所有的请求,并且将只在启动时创建一次,但req
生命只有请求的寿命.请记住,req
Express中只是一个对象,因此可以赋值.因此,如果您希望允许控制器访问某些值(类似于会话),您可以执行以下操作:
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'); });
在上面的示例中,我创建的中间件为请求分配了一个值,称为user_id
.该值适用于请求的生命周期.您可以执行类似的操作来为其分配动态值,req
以便您可以通过控制器访问它.