我在一个表上有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调用包装起来。

10-08 01:50