javascript - 错误: Can't set headers after they are sent

标签 javascript node.js callback

查询成功运行,但服务器关闭,并给出以下错误

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 循环 中运行并一次又一次发送响应,从而导致此问题。

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库如下

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"});
}); 

关于javascript - 错误: Can't set headers after they are sent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43677582/

相关文章:

javascript - Vuetify v-simple-table 突出显示选定行

JavaScript 异步回调和作用域

c# - 从 C# 调用 VC++ dll 中的回调函数

javascript - 已知像素变化时的 Canvas 优化

c# - 当我在表单 onsubmit 中有函数时,Ajax 不起作用

javascript - CSS 表格 - 鼠标悬停在 3 个表格中时的颜色效果

angularjs - 将您的 Angular NodeJS 应用程序 Docker 化

javascript - 如何用Javascript删除HTML代码?

javascript - 在 Node js 中使用模块并重新赋值

javascript - Node.js 获取函数的返回值