在mysql中直接進行這樣的判斷的方法是使用row_count(), 這一條語句要緊跟著你執行的sql語句後面. 而Nodejs的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
});
});