Sequelize 事务在异常抛出时不回滚

Sequelize transaction does not rollback when exception throws

我想在sequelize中实现transcation。但是应用事务代码后不会回滚当前插入的行。有人可以帮助我做错什么吗? Package.json 版本是 "sequelize": "^4.39.0","sequelize-cli": "^3.2.0",

 let sequelize = model.sequelize;
    return sequelize.transaction().then(function (t) {
        return model.error_logs.create(
            error_logs, { transaction: t }).then(function (user) {
            error_logs.stack = 'For Checking Transcation'
            return models.error_logs.create(error_logs, { transaction: t }); <-- Here I am creating expection
        }).then(function () {
            t.commit();
        }).catch(function (err) {
            t.rollback();
        });
    });

您应该像这样等待事务中的每个操作,并在事务结束之前等待:

const transaction = await sequelize.transaction()
try {
  const newLog = await model.error_logs.create(error_logs, { transaction: transaction })
  error_logs.stack = 'For Checking Transcation'
  const anotherNewLog = await model.error_logs.create(error_logs, { transaction: transaction })
  await transaction.commit()
} catch (err) {
  await transaction.rollback()
}

解决方案 2:

const transaction = await sequelize.transaction(async transaction => {
  const newLog = await model.error_logs.create(error_logs, { transaction: transaction })
  error_logs.stack = 'For Checking Transcation'
  const anotherNewLog = await model.error_logs.create(error_logs, { transaction: transaction })
})