我一直在使用 express.js 构建我的第一个 node.js 应用程序。这很有趣 :) 我一定有某种误解,所以就这样吧。
我有一些这样定义的路线:
app.all('/account/summary', apiPOST('AccountSummary', {FromDate: 'default', ToDate: 'default'}), function(req, res){
var data=req.apiJSON;
console.log(data);
res.render('accountsummary', {locals: data, layout: 'layouts/layout'});
});
apiPOST() 定义如下:
apiPOST = function (operation, postParams) {
return function (req, res, next){
console.log('RIGHT AT START');
console.log(postParams);
console.log('END');
var currentDate = new Date();
var day = ('0'+currentDate.getDate()).slice(-2);
var month = ('0'+(currentDate.getMonth() + 1)).slice(-2);
var year = ('0'+currentDate.getFullYear()).slice(-4);
console.log('BEFORE DATES');
console.log(postParams);
if (typeof(postParams.FromDate)!='undefined' && (postParams.FromDate=='default' || postParams.FromDate=='')){
postParams.FromDate=year+'-'+month+'-'+day;
}
if (typeof(postParams.ToDate)!='undefined' && (postParams.ToDate=='default' || postParams.ToDate=='')){
postParams.ToDate=year+'-'+month+'-'+day;
}
//automatically add all posted data to postParams
if (typeof(req.body)!='undefined'){
for (var key in req.body){
if (req.body.hasOwnProperty(key)){
postParams[key]=req.body[key];
}
}
}
// here is do some talking to an XML web service and convert it to JSON;
// we use our postParams variable to POST
next();
}
}
首先,这很好用。当通过 GET 请求到达页面时,它将 FromDate 和 ToDate 都默认为今天。此页面有一个表单,您可以发布该表单以指定新的 FromData 和 ToDate。发布的数据会自动添加到 postParams 并且也可以正常工作。
我遇到的问题是,下次用户使用 GET 访问页面时,之前发布的数据仍然存在,因此它默认为该数据,而不是今天。
我无法弄清楚为什么这些数据仍然可用。从外观上看,它并没有被发布,而是在 postParams 中被记住。postParams 现在是全球性的吗?
谢谢!