我是Node.js的新手,我想知道,除了session()之外,我是否可以使用“存储”来存储当前请求的变量?
我有一个基于Authorization标头的API,以及存储在Redis中的有效令牌池。
因此,我没有会议,也不想。
但是我想存储变量以便在此请求期间进一步使用。例如,我想存储与Redis中找到的令牌相对应的user_id,以便我可以在任何需要的地方使用它。
如果我做类似的事情:
app = express(); app.user_id = 1;
可以,还是我的user_id对应用程序处理的所有请求都变为全局?(简而言之:应用程序是针对服务器处理的每个请求实例化的,还是持久的?)
如果这样做不行,那么我如何在没有会话的情况下实现类似的目标?
感谢您的任何帮助 :)
该app
句柄处理所有请求,并且仅在启动时创建一次,但是req
仅在请求的生存期内存在。请记住,req
in 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
以便可以通过控制器访问它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句