0
由于我在客户端发生了错误,因此每次发送表单时,我的节点/快速API都会同时收到两次完全相同的PUT请求。获取客户端调用时的快速中断
在响应,服务器总是有以下错误而崩溃:
Error: Can't set headers after they are sent
现在我固定的客户端,以便服务器不崩溃了,但我想正确地解决API。任何人都可以同时发送两个PUT请求来终止我的服务器。
所以我的问题:
- 如何最好地快速处理“不能设置头”的错误?
- 我的服务器代码中的错误是否允许首先发生该错误?
这里是我的服务器代码:
server.js
router.route('/deals/:id').put(deal.update);
deal.js
var r = {};
exports.update = function(req, res) {
r = res;
var u = {
$set: {}
}
for(var x in req.body){
if (['name','stages'].indexOf(x)>=0)
u.$set[x] = req.body[x];
}
Pipeline // this is a mongoose object
.findOneAndUpdate({'_id.id':req.params.id},u,{new:true})
.exec(respond);
}
function respond(err, data) {
if (err) {
return r.send(err);
} else {
return r.json(data);
}
}
UPDATE:
错误来自我如何声明一个全局r为了有一个单一的响应回调以外的所有我的方法。
我通过对每个方法都有一个响应回调来修复它。
仍然有兴趣知道我是否可以用绑定(res)逃脱?
谢谢,这实际上是有道理的,我更新了我的代码。尽管如此,执行官并没有犯错。 –
我认为你需要在你的代码的其他地方看看。你可以尝试node-inspector来跟踪发生的事情 –
谢谢,我发现了你不可能犯的错误,因为我没有逐字粘贴代码,我的错误。你能帮我绑定吗?我会接受你的回答。 –