首页 > 解决方案 > 错误 [ERR_HTTP_HEADERS_SENT]:在将标头发送到客户端后无法设置标头(多个数据条目)

问题描述

所以我试图插入然后更新数据,数据库已根据预期的查询成功更新,并且能够接收到客户端的响应,但在服务器上收到上述错误,不知道如何调试它,我试过看看前面的相关问题,没有运气。

var urlencodedParser = bodyParser.urlencoded({ extended: false });
router.post('/createprovision', urlencodedParser,(req, res) => {
    let serials = [];
    for (let i = 0; i < req.body.length; i++){
        serials.push(req.body[i][1]);
    }  

    let sql = 'INSERT INTO provision (employee_id, serial_no, provision_date) VALUES ?';
    connection.query(sql, [req.body],(err, results) => {
        for(let i = 0; i < serials.length; i++){
            let sql2 = `UPDATE inventory SET ? WHERE serial_no = '${serials[i]}'`;
            connection.query(sql2, [{status: "assigned"}],(err, results) => {
                if (err) throw err;
                return res.send("provision success!");
            });
        }
    });
});

ERR_MSG:

错误 [ERR_HTTP_HEADERS_SENT]:在将标头发送到客户端后无法设置标头(多个数据条目)

标签: javascriptnode.jsserver

解决方案


您已将您return res.send("provision success!");放入一个 for 循环中,这意味着您在第一次迭代中向客户端发送响应,然后您尝试再次发送响应,但标头已发送。将其放在函数的末尾,仅在 process all 之后发送响应serials


推荐阅读