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

 捕鱼达人2602890295 发布于 2023-01-08 12:17

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

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

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

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

如果我这样做:

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

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

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

感谢您的任何帮助 :)

1 个回答
  • 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');
    });
    

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

    2023-01-08 12:20 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有