当前位置: 首页 > 知识库问答 >
问题:

使用Express中的next()将变量传递给下一个中间件。js

潘琪
2023-03-14

我想从第一个中间件传递一些变量到另一个中间件,我试着这样做,但是有“req.somevariable是一个给定的“未定义”。

//app.js
..
app.get('/someurl/', middleware1, middleware2)
...
////middleware1
...
some conditions
...
res.somevariable = variable1;
next();
...
////middleware2
...
some conditions
...
variable = req.somevariable;
...

共有3个答案

余靖
2023-03-14

我不认为最佳实践是传递一个像req这样的变量。您的_VAR。您可能需要考虑<代码> Req。您的应用程序名称。您的_VAR或req。兆瓦参数。您的_VAR

它将帮助您避免覆盖其他属性。

更新May 31,2020

res.locals是您要寻找的,对象的作用域是请求。

一个对象,它包含作用于请求的响应局部变量,因此仅对在该请求/响应周期(如果有的话)中呈现的视图可用。否则,此属性与app.locals.相同

此属性对于公开请求级信息(如请求路径名、经过身份验证的用户、用户设置等)非常有用。

白越
2023-03-14

将变量附加到req对象,而不是res

而不是

res.somevariable = variable1;

拥有:

req.somevariable = variable1;

正如其他人所指出的,res.locals是通过中间件传递数据的推荐方式。

柳墨一
2023-03-14

这就是res.locals对象的用途。不支持或记录直接在请求对象上设置变量。res.locals保证在请求的生命周期内保持状态。

本地人

一个对象,它包含作用于请求的响应局部变量,因此仅对在该请求/响应周期(如果有的话)中呈现的视图可用。否则,此属性与app.locals.相同

此属性对于公开请求级信息(如请求路径名、经过身份验证的用户、用户设置等)非常有用。

app.use(function(req, res, next) {
    res.locals.user = req.user;  
    res.locals.authenticated = !req.user.anonymous;
    next();
});

要在下一个中间件中检索变量,请执行以下操作:

app.use(function(req, res, next) {
    if (res.locals.authenticated) {
        console.log(res.locals.user.id);
    }
    next();
});
 类似资料:
  • 问题内容: 好吧,我的问题是我想将一些变量从第一个中间件传递给另一个中间件,我尝试这样做,但是有一个“给定为’undefined’”。 问题答案: 将变量附加到对象,而不是。 代替 有: 正如其他人指出的那样,这是通过中间件传递数据的推荐方法。

  • 我是一个非程序员,有非常少的代码接触,但我想修改一个现有的代码库。我大大简化了下面的代码。请让我知道,如果我可以提供任何进一步的信息或如果这是没有意义的所有!Vocab很难。:) ClassD:

  • 问题内容: 我对此完全迷失了;我正在使用NodeJS来获取JSON,我需要将变量传递给我的页面并让JavaScript使用数据。 那就是我的Express代码(出于测试目的非常简单);现在使用EJS,我想收集这些我知道要呈现在页面上的数据, 但是我需要能够在JavaScript中收集这些数据(如果可能在.js文件中),但现在只是在我尝试过的“警告”框中显示变量 在翡翠中就像或。我可以在EJS中做类

  • 问题内容: 我有类似下面的代码: 但是,该变量未在ActionListener类的范围内定义。如何传递变量? 问题答案: 除了Hovercraft的答案外,您还应注意,您不会被迫对侦听器使用匿名类。气垫船的答案代码类似于以下代码:

  • 问题内容: 我想将一个类变量传递给另一个类,并使其成为该类的类变量。在以下情况下我该怎么做? 问题答案: 很难理解您正在问的问题,但这是一个可能的答案: 使B类成为A的子类: 如果重新声明为,则会出现一种情况,其中存在一个可以称为或的属性。(或在任一或刚刚…甚至作为或地方,并有类型和分别。) 如果您无法在和(或,以及一些包含声明的第三类)之间创建直接或子类型关系,那么您很不走运。他们无法共享声明。

  • 问题内容: 我有Google地图提供的JavaScript值,需要将其保存在MySQL数据库中。 其实我有变量 我需要将该变量传递给PHP变量lugar 问题答案: 如果要在页面转换时进行操作,则可以通过表单或在URL中传递它,然后仅使用或接收变量。 如果您需要无缝完成它,那么您可能需要考虑使用AJAX。