我收到发送错误后无法发送标头。好吧,我已经尝试删除我能做的一切,但它失败了。我的路线在下面,我知道这不是最有效的方式,但不知道更好的方法。
我理想情况下能够执行每个空行所在的res.redirect("/dashboard/it/model");
,这就是我最初所拥有的。我删除了它们并遇到了同样的错误,所以我注释掉了setRender
,这几乎是res.render()
。我不确定我还能改变什么来使这项工作。我需要简单地完成每个查询,这样我就不必创建13条不同的路由。如果需要的话,我可以做到这一点,而是把它放在一个地方。
路线:
// delete model
app.delete('/dashboard/it/model/delete/:id',
// setRender('dashboard/it/model'),
setRedirect({auth: '/login'}),
isAuthenticated,
(req, res, next) => {
AP.findByIdAndRemove(req.params.id, function(err){
if(err){
} else {
}
});
Cable.findByIdAndRemove(req.params.id, function(err){
if(err){
} else {
}
});
DeskPhone.findByIdAndRemove(req.params.id, function(err){
if(err){
} else {
}
});
Desktop.findByIdAndRemove(req.params.id, function(err){
if(err){
} else {
}
});
Laptop.findByIdAndRemove(req.params.id, function(err){
if(err){
} else {
}
});
MobilePhone.findByIdAndRemove(req.params.id, function(err){
if(err){
} else {
}
});
Monitor.findByIdAndRemove(req.params.id, function(err){
if(err){
} else {
}
});
Printer.findByIdAndRemove(req.params.id, function(err){
if(err){
} else {
}
});
Projector.findByIdAndRemove(req.params.id, function(err){
if(err){
} else {
}
});
Router.findByIdAndRemove(req.params.id, function(err){
if(err){
} else {
}
});
Switch.findByIdAndRemove(req.params.id, function(err){
if(err){
} else {
}
});
Tablet.findByIdAndRemove(req.params.id, function(err){
if(err){
} else {
}
});
Custom.findByIdAndRemove(req.params.id, function(err){
if(err){
} else {
}
res.redirect("/dashboard/it/model");
});
next();
},
dashboard.getDefault);
答案 0 :(得分:0)
这是我看到的一个简单问题(不知道这是唯一的问题,因为你遗漏了很多代码)是你正在做res.redirect()
并且你正在调用next()
。你需要做一个或另一个,而不是两者。
res.redirect()
发送302响应。然后,调用next()
允许其他中间件或处理程序也处理请求,其中一个也可能发送响应。尝试向同一请求发送多个响应是导致您看到错误的原因。
因此,如果您要重定向,请不要再拨打电话。
此外,如果你要像res.redirect()
或next()
一样,那么你也不能在任何if/else
条款中发送回复。由于您没有解释该代码的目的,我们无法猜测它应该如何工作。这里的关键原则是每个请求只发送一个响应。发送任意多个会触发您看到的错误。