작동하지 않습니다 내부에 나는이 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
});
});
});
});
것은이 베팅 객체가 업데이트되지 않은 것입니다, 그 둘을 console.log 이전 개체를 인쇄합니다. 이 경우 베팅을 어떻게 저장할 수 있습니까? 그 사이에 User 객체가 업데이트되었습니다. 이상합니다.
bet.save(function (err, bet) {
if (err){ console.log(err); }
console.log('saved bet: ', bet);
// place for other code after save operation..
});
약속 반환 사용 :
친절 하 고 정교 하 게 * how * and * why * this는 thew OP 질문을 해결할 것입니까? –
그의 경우에는 베팅이 저장 될 때까지 기다리지 않기 때문에 작동하지 않았습니다. http://mongoosejs.com/docs/api.html#model_Model-save를 참조하십시오. 내 예제에서는 저장 한 약속 저장 - 베팅 저장을 사용합니다. –
대답을 편집 할 수 있다면 좋을 것 같습니다. –