我對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我的示例使用保存返回的諾言 - 保存下注。 –
如果能夠正確地編輯你的答案,那將會很棒。 –