我对API验证码:KeystoneJS保存()内getUpdateHandler回调不工作
var data = (req.method == 'POST') ? req.body : req.query;
if (!data.betId || !data.userId) return res.apiError('wrong request payload');
BetUser.model.findOne({bet: data.betId, user: data.userId}).exec(function(err, bets){
if (bets){
return res.apiError('you placed the bet for this bet', bets);
}
var bet_item;
item = new BetUser.model({bet: data.betId, user: data.userId});
item.getUpdateHandler(req).process(data, function(err) {
if (err) return res.apiError('error', err);
Bet.model.findById(data.betId).exec(function(err, bet){
if (err) return res.apiError('database error', err);
switch(parseInt(item.betChoice)){
case 0:
bet.drawTeamBets +=1;
break;
case 1:
bet.firstTeamBets +=1;
break;
case 2:
bet.secondTeamBets +=1;
break;
};
bet.drawTeamBets = 1000;
console.log(bet);
bet.save();
console.log(bet);
bet_item = bet;
});
User.model.findById(data.userId).exec(function(err, user){
if (err) return res.apiError('database error', err);
user.gold -= item.betAmount;
user.save();
res.apiResponse({
bet_detail : item,
user : user,
bet : bet_item
});
});
});
});
的事情是,输入对象没有更新,那些2的console.log打印的旧对象。 如何在这种情况下保存投注?同时User对象已更新。这么奇怪。
你会如此善良和精心*如何*和*为什么*这解决了OP的问题? –
在他的情况下,它不工作,因为它不等待下注保存,请参阅http://mongoosejs.com/docs/api.html#model_Model-save我的示例使用保存返回的诺言 - 保存下注。 –
如果能够正确地编辑你的答案,那将会很棒。 –