我在一个表上有27个mysql更新查询。所有这些查询都将在事务模式下运行,例如,如果一项操作失败,则所有其他更新的查询都应回滚。
我将如何用promises实现这个nodejs?
最佳答案
我假设您使用发现here的mysql驱动程序。
根据documentation,此驱动程序本身支持这样的事务(从文档中复制):
connection.beginTransaction(function(err) {
if (err) { throw err; }
connection.query('INSERT INTO posts SET title=?', title, function (error, results, fields) {
if (error) {
return connection.rollback(function() {
throw error;
});
}
connection.query('INSERT INTO log SET data=?', log, function (error, results, fields) {
if (error) {
return connection.rollback(function() {
throw error;
});
}
connection.commit(function(err) {
if (err) {
return connection.rollback(function() {
throw err;
});
}
console.log('success!');
});
});
});
});
既然您提到了Promise,您就想使用promise-mysql包,该包将Bluecall Promise中的mysql调用包装起来。