ERROR [ERR_HTTP_HEADERS_SENT]: CANNOT SET HEADERS AFTER THEY ARE SENT TO THE CLI

94 阅读1分钟

ERROR [ERR_HTTP_HEADERS_SENT]: CANNOT SET HEADERS AFTER THEY ARE SENT TO THE CLIENT

出现这种报错的主要原因,简单来说就是因为:客户端发出一次请求之后服务器给出了多次回应

这时候就需要检查代码,确定是否代码编写错误。

笔者出现这种错误的原因是:想实现的是,循环遍历数组里的id,然后逐条拼成mysql语句进行删除,然后每条语句执行都进行回应,这就造成了一次请求多次回应。

非常尴尬,现在回想都觉得尴尬,怎么会犯下这种错。

究其原因是因为粗心以及对于JS的mysql第三方包不够熟悉。

其实这完全可以直接用mysql第三包来实现:

let id_arr = req.body.carts_id;
connection.query('delete from goods_cart where id in (?) ',[id_arr],function(error,results){
    res.send({
        data:{
                code:0,
                success:true,
                msg:'删除成功'
        }
    })
})

这样就很容易的解决了一次请求多次回应的问题。

node mysql 中 connection.query('select * from table where tel=?',[tel],function(){}),如果tel有多个值怎么办?

	connection.query('select * from table where age=? and tel in (?);',[20, [1, 2, 3]],function(){})