本文介绍在Node.js中通过mysql模块执行SQL后,如何获取更新或删除操作影响的行数。由于Node.js异步特性,直接调用row_count()难以对应具体语句,实际可通过回调函数中rows对象的affectedRows属性获取结果,并据此判断操作是否成功。
Node.js中获取MySQL影响行数的方法
在MySQL数据库中,若需直接判断受影响的行数,通常使用row_count()函数,且该语句必须紧跟在执行的SQL之后。然而,Node.js的I/O操作均为异步执行,这导致难以准确判断row_count()的结果究竟属于哪一条SQL语句。粗略查阅文档后,并未发现对此问题的明确说明。原本考虑通过函数嵌套实现同步效果,但意外发现执行SQL的异步回调参数中包含了affectedRows字段。经测试,该字段即为row_count()的结果。
示例代码如下:
var cmd = 'UPDATE users SET ' + field + ' = ' + value + ' WHERE id = ' + userid;
console.log(cmd);
db.query(cmd, function(err, rows, fields){
var affectedRows = rows.affectedRows;
if(err || affectedRows){
var msg = 'update ' + field + ' error';
logger.error(msg);
res.send({
'code': 500,
'state': 'failure',
'msg': msg,
'data': null
});
return;
}
res.send({
'code': 200,
'state': 'success',
'msg': 'updated',
'data': null
});
});