【发布时间】:2017-10-17 06:09:26
【问题描述】:
我正在使用 Node.js 和 ExpressJS 来保存猫鼬模型。我收到了Error: Can't set headers after they are sent. 的错误,我认为这与res.redirect("/dashboard/it/model"); 与我的路线中的setRedirect({auth: '/login'}), 冲突有关,setRedirect 中的代码在下面标记。 setRedirect 来自一个名为 middleware-responder 的中间件,它是我用来创建 Stripe 用户帐户的模板的一部分。据我所知,我无法删除它。我的GitHub repo 我已经提交了所有不是测试文件并且相关的文件(没有不需要的视图,而不是已经存在的)
保存模型
if(type=="aps"){
var newAccessPoint = {
name: name,
manufacturer: manufacturer,
model: model,
range: range,
bands: bands,
channel: channel,
poe: poe,
notes: notes,
signout: signout,
author:author
};
// Create a new access point and save to DB
AP.create(newAccessPoint, function(err, newlyCreated){
if(err){
console.log(err);
} else {
//redirect back to models page
res.redirect("/dashboard/it/model");
}
});
}
路线
app.post('/dashboard/it/model/new',
setRender('dashboard/it/modelCreate'),
setRedirect({auth: '/login'}),
isAuthenticated,
dashboard.getDefault,
(req, res) => {
设置重定向代码
exports.setRedirect = function(options){
return function(req, res, next){
if(req.redirect){
req.redirect = _.merge(req.redirect, options);
} else {
req.redirect = options;
}
next();
};
};
设置渲染代码
exports.setRender = function(view){
return function(req, res, next){
req.render = view;
next();
};
};
【问题讨论】:
标签: javascript node.js mongodb express mongoose