簡體   English   中英

錯誤:發送標頭后無法設置

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM