Query run successfully but Server closed And it give following error
Error: Can't set headers after they are sent.
at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:356:11)
As I find it send response on per loop that is the main reason. So my question how to send response after completing the loop?
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;
You are running in for loop
and sending response again and again causing this problem.
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"});
}
}
You can use async library as below
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"});
});
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.