3
我在我的數據庫中有'錢'字段的'銀行'表,節點js。續訂交易
用戶可以定期提款,但只有在銀行存款> 0時纔可以提款。
首先,我應該得到銀行的實體,然後檢查是否(銀行。貨幣> amountToWithdraw),然後撤回此金額。
想象一下當併發用戶試圖提取一些錢時的情況。 在那個時候我檢查是否(bank.money> amountToWithdraw)其他用戶可以執行提取操作,並且數據庫中的真實銀行金額會更少。
如何將交易應用於查找銀行操作(如何鎖定銀行實體)?
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});
})
})
你無法理解我花了多少時間尋找一個好的解決方案。我認爲文檔不太清楚交易使用情況。你的問題拯救了我的生命! –
如何使用兩行,例如在一行中我有數量10,在其他20,我想減少3,並給其他,所以新的數量將是7和23? – user1735921