问题原因
出现Cannot set headers after they are sent to the client的原因,客户端发出一次请求,服务器给出两次及以上响应。
解决办法
建议大家排查一下接口,清除掉多余的响应。
// 第三方插件const mysql = require('mysql');// 数据库信息 let dbinfo = { host: '127.0.0.1', //数据库的ip地址 user: 'root', //登录数据库的账号 password: '123456',//数据库的密码 database: 'test', //数据库的名称 multipleStatements: true, // 支持执行多条 sql 语句}// 定义公共的数据库查询方法,传入三个参数 sql语句,res,参数:前两个为必传,参数不传默认为空数组let db = function (sql, res, params = []) { return new Promise((resolve, reject) => { // 一、新建一个连接池 let pool = mysql.createPool(dbinfo) // 二、连接 pool.getConnection((error, connection) => { // 三、使用sql语句操作 connection.query(sql, params, (err, results, fields) => { if (err) { // res是调用接口时,如果执行mysql执行出错,直接返回报错信息 res.send({ code: 500, status: false, msg: "服务器内部错误:" + err.message }) } else { resolve(results) } // 四、释放连接池 connection.release() }) }) })}
调用db方法示例
// router是express框架的路由 , db为我们定义的mysql查询方法const { router , utilSuccess , utilErr , db } = require('../../util/util');router.post('/deleteWxuser', (req,res)=>{ let { id } = req.body, deleteSql = 'delete from wxuser where id in (?)'; db( deleteSql , res , [ id ] ).then( sqldata =>{ if( sqldata.affectedRows ){ res.send({ ...utilSuccess, msg: "删除用户成功" }) }else{ res.send({ ...utilErr, msg: "删除用户失败", }) } })})
来源地址:https://blog.csdn.net/weixin_45481145/article/details/125455998