gpt4 book ai didi

javascript - Node js。 Sequelize 交易

转载 作者:IT老高 更新时间:2023-10-28 23:18:26 25 4
gpt4 key购买 nike

我的数据库中有 'Banks' 表和 'money' 字段,

用户可以定期取款,但只有在银行存款>0时才能取款。

首先我应该得到银行的实体,然后检查 if(bank.money > amountToWithdraw) 然后提取这个金额。

想象一下这种情况,当并发用户尝试提取一些钱时。在我检查 if(bank.money > amountToWithdraw) 其他用户是否可以执行提款操作的那一刻,数据库中的真实 bank.money 金额会更少。

如何将交易应用于寻找银行操作(如何锁定银行实体)?

models.sequelize.transaction(function (t) {

return models.Banks.findOne({where: {
money: {
$gt: 0
}
}).then(function(bank){

//in this moment other user finished the same operation
// how to lock access for editing bank object by other users after //findOne method?

bank.money -= amountToWithdraw;
return bank.save({transaction: t});
})
})

最佳答案

您可以在银行的行上使用锁。

它可能看起来像这样,具体取决于您的数据库。

models.sequelize.transaction(function (t) {

return models.Banks.findOne({where: {
money: {
$gt: 0
}
}, lock: t.LOCK.UPDATE, transaction: t }).then(function(bank){

bank.money -= amountToWithdraw;
return bank.save({transaction: t});
})
})

关于javascript - Node js。 Sequelize 交易,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40703513/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com