以下代码是我们正在构建的新节点应用程序的面向用户的部分:
var loadInvoice = function(req, res, next) {
Invoice.findById(req.params.invoiceId, function (err, invoice) {
if (err) {
res.send(404, 'Page not found');
} else {
req.invoice = invoice;
next();
}
});
};
app.namespace('/invoices/:invoiceId', loadInvoice, function () {
app.get('', function(req, res){
var templateVals = {
//some template data
};
res.render('paymentselection', templateVals);
});
app.post('', function(req, res){
var data = {
// some data for the apiCall
};
someAPI.someRequest(data, function(err, data) {
console.log(res.status());
res.redirect(data.url);
});
});
});
第一种方法返回一个确认页面,用户在该页面中按下按钮以发布到相同的 url,这会触发重定向到外部网站。
这一切都只工作一次。在发送后,每第二个请求都会使应用程序崩溃,并显示无法设置标头的消息。在仔细检查代码后,我找不到发生这种情况的原因,所以我添加了 console.log 行,它确实确认了位置标头已设置。但它被设置为我在上一个请求而不是当前请求中从 someAPI 获得的值。
这对我来说完全没有意义。我不会在任何地方存储这个值,也不会以任何方式缓存或持久化这些数据。
有人知道是什么原因造成的吗?
我使用 express、express-namespace、mogoose 和 swig