gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 02:58:24 25 4
gpt4 key购买 nike

我对 Node.js 非常陌生,我想知道除了 session() 之外,我是否可以使用“存储”来存储当前请求的变量?

我有一个基于授权 header 的 API,以及存储在 Redis 中的有效 token 池。

因此我没有 session ,也不想参加。

但我想存储变量以供在此请求期间进一步使用。例如,我想存储在Redis中找到的token对应的user_id,这样我就可以在任何我想要的地方使用它。

如果我做类似的事情:

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

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

如果这不行,我怎样才能在没有 session 的情况下实现这样的目标?

感谢您的帮助:)

最佳答案

app 处理所有请求,并且只会在启动时创建一次,但 req 仅在请求的生命周期内存在。请记住,Express 中的 req 只是一个对象,因此可以赋值。因此,如果您想允许 Controller 访问某些值(类似于 session ),您可以执行以下操作:

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 分配一个动态值,以便您可以通过 Controller 访问它。

关于Node.js 变量仅适用于当前请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24335902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com