Sequelizejs:如何将事务与原始查询一起使用
Sequelizejs: how to use transactions along with raw queries
我正在使用 sequelize orm。我在他们的文档中找不到如何在使用原始查询时使用事务。我所看到的只是模型定义的查询方法。但是对于原始查询,没有关于将事务对象放置在何处以用于该特定查询的规范。
您可以这样传递交易:
const t = await sequelize.transaction();
sequelize.query('SELECT * FROM table;', { transaction: t })
请参阅 transactions docs 了解定义交易的不同方式。
上面的link对我没有帮助,但是已经想出了解决办法:
(如果您在 catch 块中回滚,事务将被还原。)
sequelize.transaction(async transaction => {
try {
await sequelize.query(
`
UPDATE Balances
SET amount = @amount := amount -
WHERE userId=`,
{
type: Sequelize.QueryTypes.UPDATE,
transaction,
raw: true
},
)
await sequelize.query(
`
UPDATE Balances
SET amount = @amount := amount -
WHERE userId=`,
{
type: Sequelize.QueryTypes.UPDATE,
transaction,
raw: true
},
)
} catch (error) {
transaction.rollback();
throw `TRANSACTION_ERROR`;
}
})
还在看的小伙伴,用这个:
我们需要在最后提交交易。
const t = await sequelize.transaction();
try{
await sequelize.query('SELECT * FROM table;', { transaction: t })
await t.commit();
}
catch (e) {
await t.rollback();
}
请查看此处的文档:https://sequelize.org/master/manual/transactions.html
我正在使用 sequelize orm。我在他们的文档中找不到如何在使用原始查询时使用事务。我所看到的只是模型定义的查询方法。但是对于原始查询,没有关于将事务对象放置在何处以用于该特定查询的规范。
您可以这样传递交易:
const t = await sequelize.transaction();
sequelize.query('SELECT * FROM table;', { transaction: t })
请参阅 transactions docs 了解定义交易的不同方式。
上面的link对我没有帮助,但是已经想出了解决办法: (如果您在 catch 块中回滚,事务将被还原。)
sequelize.transaction(async transaction => {
try {
await sequelize.query(
`
UPDATE Balances
SET amount = @amount := amount -
WHERE userId=`,
{
type: Sequelize.QueryTypes.UPDATE,
transaction,
raw: true
},
)
await sequelize.query(
`
UPDATE Balances
SET amount = @amount := amount -
WHERE userId=`,
{
type: Sequelize.QueryTypes.UPDATE,
transaction,
raw: true
},
)
} catch (error) {
transaction.rollback();
throw `TRANSACTION_ERROR`;
}
})
还在看的小伙伴,用这个: 我们需要在最后提交交易。
const t = await sequelize.transaction();
try{
await sequelize.query('SELECT * FROM table;', { transaction: t })
await t.commit();
}
catch (e) {
await t.rollback();
}
请查看此处的文档:https://sequelize.org/master/manual/transactions.html