我正在使用sequelize orm.我在他们的文档中找不到如何在使用原始查询时使用事务.我所看到的只是模型定义的查询方法.但是对于原始查询,没有关于将事务对象放在何处用于该特定查询的规范.
http://docs.sequelizejs.com/en/latest/api/sequelize/#querysql-options-promise
[options.transaction = null]事务应在其下执行查询的事务
上面的链接对我没有帮助,但已经找到了解决方案:(如果您在 catch 块中回滚,事务将被还原。)
sequelize.transaction(async transaction => {
try {
await sequelize.query(
`
UPDATE Balances
SET amount = @amount := amount - ${10}
WHERE userId=${1}`,
{
type: Sequelize.QueryTypes.UPDATE,
transaction,
raw: true
},
)
await sequelize.query(
`
UPDATE Balances
SET amount = @amount := amount - ${10}
WHERE userId=${2}`,
{
type: Sequelize.QueryTypes.UPDATE,
transaction,
raw: true
},
)
} catch (error) {
transaction.rollback();
throw `TRANSACTION_ERROR`;
}
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5537 次 |
| 最近记录: |