【发布时间】:2021-05-10 21:01:47
【问题描述】:
我正在使用 sequelize 事务(托管),当错误引发回滚并没有真正发生时,也许我在这里做错了什么?
我的测试用例:当代码块 2 抛出错误时,代码块 1 中所做的事情并没有回滚,请帮忙。
return sequelize.transaction(function (t) {
return db.VenueTag.destroy({where: {venueId: venue.venueId}}, {transaction: t}).then(function () {
}, {transaction: t}).then(function () {
//block 1
return db.VenueTag.upsert({
...
});
}, {transaction: t}).then(function () {
//block 2
//update venue details
return venue.updateAttributes({
...
},{ transaction: t});
});
}).then(function (result) {
// Transaction has been committed
// result is whatever the result of the promise chain returned to the transaction callback
return res.status(200).json(result);
}).catch(function (err) {
// Transaction has been rolled back
// err is whatever rejected the promise chain returned to the transaction callback
return res.status(500).send({
message: errorHandler.getErrorMessage(err)
});
});
【问题讨论】:
-
如果您认为这是一个续集错误,这可能更适合sequelize bug tracker。记得将你的模型定义发布到错误中
-
感谢 Jan .. 问题已登录 sequelize bug tracker。github.com/sequelize/sequelize/issues/3355
标签: node.js sequelize.js