小劳弟碰到了点问题,nodejs中mysql添加数据,第一个成功添加,然后第二次就出问题了,前端是正常穿了数据过来的,数据没有成功添加到数据库,也不报错,智能间隔上一小短时间才能成功添加数据到数据库,是因为什么啊?是缺少设置,还是什么啊?
nodejs代码:
router.post('/',upload.array('avatar',3),(req,res) => {
console.log('req.file',req.file);
console.log('req.files',req.files);
console.log('req.body',req.body.form);
try {
if(req.files && req.body.form) {
const data = JSON.parse(req.body.form)
data.src = src
pool.getConnection(function(err, connection) {
if (err) console.log(err);
// Object.values(obj)将obj中所有可枚举属性的值组成一个数组
connection.query('insert into alldata values(0,?,?,?,?,?,?,?,?,?,?,?,?,?,?)',Object.values(data), function (error, results, fields) {
// connection.release();
connection.end();
if (error) {
console.log(error)
}
});
})
arr = []
}
res.send({code:200,msg:"做得很好,孩子"})
} catch (err) {
res.status(500).send(err);
}
})
好头痛啊,为啥啊,大锅们
你好,我注意到了你的程序在每次请求结束后,您并没有及时释放连接池中的连接,而是使用 connection.end() 方法关闭了连接,这可能导致连接池中的连接数量不足,从而导致后续请求无法获取到连接,需要等待连接的释放。可以尝试在每次请求结束后使用 connection.release() 方法释放连接,这样可以将连接返回给连接池,以便后续请求可以继续使用连接池中的连接。
你看看按照这个方法改,看看能不能有效,要是有效,劳烦给我个关注,谢谢!
router.post('/',upload.array('avatar',3),(req,res) => {
console.log('req.file',req.file);
console.log('req.files',req.files);
console.log('req.body',req.body.form);
try {
if(req.files && req.body.form) {
const data = JSON.parse(req.body.form)
data.src = src
pool.getConnection(function(err, connection) {
if (err) console.log(err);
// Object.values(obj)将obj中所有可枚举属性的值组成一个数组
connection.query('insert into alldata values(0,?,?,?,?,?,?,?,?,?,?,?,?,?,?)',Object.values(data), function (error, results, fields) {
connection.release(); // 释放连接
if (error) {
console.log(error)
}
});
})
arr = []
}
res.send({code:200,msg:"做得很好,孩子"})
} catch (err) {
res.status(500).send(err);
}
})