業余時間玩nodejs的時候遇到點蛋疼的情況, 在使用mysql模塊連接mysql操作, 想在update, delete語句的時候, 想知道到底update, delete成功了沒有
在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 }); });