我有使用express.js,node.js和mongoose计算瓶子的项目。 (减少和增加)
我的服务器
app.post("/give",function(req,res){
Bottle.findById({type: "coca"}, function (err, data) {
if(data.amount <= 0) return res.json({message: "Not enough coca"});
data.amount -= 1;
data.save();
return res.json({message: "Give success"});
})
}
我编辑了我的数据库 amount = 1
然后我快速向http发出请求(循环10)
所以我的服务器接受5,不接受5,并且在我的数据库 amount = -5
因为它返回 if(data.amount <= 0) return res.json({message: "Not enough coca"});
我希望nerver得到吼叫0 我该怎么办?谢谢。
抱歉,我的英文不好
修改
我必须尝试在console.log('hello word');
之前添加data.amount -= 1;
,然后记录 6次!为什么???
修改
问题解决于this link
致电返回res.json({message:“Give success”});将在data.save();
完成之前完成。
app.post("/give",async(req,res)=>{
const bottle = await Bottle.findById({type: "coca"}).exec;
if(bottle.amount <= 0) return res.json({message: "Not enough coca"});
bottle.amount -= 1;
await bottle.save();
res.json({message: "Give success"});
}