Node.js - 在会话之间传递变量

时间:2016-01-17 00:57:09

标签: javascript node.js express

假设我在node.js中有这段代码:

app.post('/stuff', function(req, res){
  res.send('hello world');
});
app.route('*').all(function(req,res,next){
  res.write('Hello World');
});

这里有2条路线 - 一条是对服务器的任何请求的全部捕获,另一条是如果发送带有/ stuff路由的发布请求,该怎么办。

是否可以将post请求的本地值传递给路由?

预期的程序流程:对服务器的初始请求通过路由(具有未示出的控件以忽略发布请求)并且连接保持打开,然后从初始请求发送发布请求并由app处理。 post - 可以在post的闭包中找到的值传递给仍然打开的初始请求吗?

我试图避免使用全局变量,而res.local只有一个局部范围。还试图保持清洁,所以如果我可以使用本机快递或node.js更好。非常需要任何帮助。

2 个答案:

答案 0 :(得分:0)

  

然后从初始请求发送一个发布请求

为什么不简单地拔出POST功能并从两个处理程序中调用它,这样您就不需要从应用程序内部发送单独的请求。

var postHandler = function(req, res) {
   res.send('hello world');

   // Just return whatever you want back to the calling function
   return someValue; 
};

// Set it as the handler for post.
app.post('/stuff', postHandler); 

app.route('*').all(function(req,res,next){

  // Call function.
  var returnValue = postHandler(req, res);
  res.write('Hello World');
});

答案 1 :(得分:0)

app.route('*').all(function(req,res,next){
  if (req.originalUrl === '/stuff') {
    req.variable = 'some value';
    return next();
  };
  res.write('Hello World');
});


app.post('/stuff', function(req, res){
  var value = req.variable;
  res.send('hello world');
});

您可以尝试使用此代码。请接受app.allapp.post的订单。

第二种方式,您可以尝试app.locals http://www.expressjs.com.cn/4x/api.html#app.locals

  

app.locals对象是一个JavaScript对象,其属性是   应用程序中的局部变量。