[英]Error: Can't set headers after they are sent
查詢運行成功,但服務器關閉,並且出現以下錯誤
Error: Can't set headers after they are sent.
at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:356:11)
當我發現它在每個循環上發送響應時,這是主要原因。 所以我的問題是在完成循環后如何發送響應?
var addVenueAmenities = function(req, res) {
var post={
venue_id:req.params.venue_id,
amenitie:req.body.amenitie
}
for(i=0;i<post.amenitie.length;i++){
data={
venue_id:post.venue_id,
amenitie:post.amenitie[i]
}
var query = "INSERT INTO ?? SET ?";
var table = ["venue_amenities"];
query = mysql.format(query,table);
connection.query(query, data, function(err,rows){
if(err) {
res.json({"Error" : true, "Message" : "Error executing MySQL query"});
} else {
res.json({"Error" : false, "Message" : "Amenitie added successfully"});
}
});
}
}
module.exports= addVenueAmenities;
您正在for loop
中運行,並一次又一次發送響應,從而導致此問題。
for (i = 0; i < post.amenitie.length; i++) {
if (err) {
res.json({"Error": true, "Message": "Error executing MySQL query"});
} else {
res.json({"Error": false, "Message": "Amenitie added successfully"});
}
}
您可以如下使用異步庫
async.map(post.amenitie,function (amenitie,callback) {
var data= {
venue_id:post.venue_id,
amenitie:amenitie[i]
}
var query = "INSERT INTO ?? SET ?";
var table = ["venue_amenities"];
query = mysql.format(query,table);
connection.query(query, data, function(err,rows){
callback(err);
});
},function (err,result) {
if(err)
res.json({"Error" : true, "Message" : "Error executing MySQL query"});
else
res.json({"Error" : false, "Message" : "Amenitie added successfully"});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.