让我们假设您的app(伪)中有这样的端点:
app.get('/user/withdrawmoney',(req,res)=>{
DB.find(req.session.id,(user)=>{
if(user.balance < 0){
DB.update()...//Update the balance
...//Send user money
}
})
})
如果&#34;计时&#34;用户不可能退出多次。即使他没有平衡也是对的?
答案 0 :(得分:1)
是的,这是可能的。当您尝试更新用户的余额时,可能会出现竞争情况。以下是竞争条件示例:race condition (wikipedia)
解决竞争条件问题的一种方法是创建一个&#34;交易&#34;在mongodb。这将锁定您的模型,直到您的代码完成更新数据库。 您可以在此处查看示例:MongoDB Cookbook example