假设我在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更好。非常需要任何帮助。
答案 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.all
和app.post
的订单。
第二种方式,您可以尝试app.locals
http://www.expressjs.com.cn/4x/api.html#app.locals
app.locals对象是一个JavaScript对象,其属性是 应用程序中的局部变量。