Javascript Parse..com云代码:尝试更新用户';但是什么也没发生
我有一份背景工作,如果他们赢得联赛,我会尝试用新的平衡来更新用户平衡 这些函数是正确调用的帮助函数,但从未调用UpdateUserLearning函数中的“query.first”和updateWinningsHelper中的“then”函数,至少日志中没有显示任何内容。是的,我是用户万能钥匙Javascript Parse..com云代码:尝试更新用户';但是什么也没发生,javascript,parse-platform,parse-cloud-code,pfuser,Javascript,Parse Platform,Parse Cloud Code,Pfuser,我有一份背景工作,如果他们赢得联赛,我会尝试用新的平衡来更新用户平衡 这些函数是正确调用的帮助函数,但从未调用UpdateUserLearning函数中的“query.first”和updateWinningsHelper中的“then”函数,至少日志中没有显示任何内容。是的,我是用户万能钥匙 var updateUserEarnings = function (User,prizeValue){ //var user = new Parse.User(); console.lo
var updateUserEarnings = function (User,prizeValue){
//var user = new Parse.User();
console.log("updateUserEarnings Called");
console.log("User Id: " + User.id);//Shown in log fi
console.log("PrizeValue " + prizeValue);//Shown in log file
var query = new Parse.Query(Parse.User);
query.equalTo("objectId",User.id);
return query.first({
success: function(result){
console.log("updateUserEarnings success");//Never Reached here
var balance;
if (result.get("cashBalance")){
balance = result.get("cashBalance");
}else{
balance = 0;
}
console.log("Current Balance "+ balance + " for "+result.get("DisplayUsername"));
balance = balance + prizeValue;
result.set("cashBalance",balance);
console.log("User " + result.get("DisplayUsername") + " Balance Updated : " + balance);
return result
},error:function(error){
console.log("user update error "+error);//never reached here as well
return error;
}
})
}
var updateWinningsHelper = function(index,lastIndex,record){
var winningObj = record.winningObject;
console.log("Winning object "+ JSON.stringify(winningObj));//Shown in log
console.log("Index : "+index + " lastIndex : "+lastIndex);//Shown in log
if (index < lastIndex){
updateUserEarnings(winningObj.get("User"), winningObj.get("League").get("PrizeValue")).then(
function(user){
console.log("Inside then function");//Never Reached
saveAllObjects.push(user);
},
function(error){
console.log("Error Happened "+error );//never reached
}
);
winningObj.set("LeagueWon",true);
winningObj.set("isRedeemed",true);
}else{
winningObj.set("LeagueWon",false);
}
index++;
winningObj.set("Rank",index);
return winningObj;
};
var updateUserEarnings=函数(用户,prizeValue){
//var user=new Parse.user();
log(“updateUserLearnings被调用”);
console.log(“用户Id:+User.Id);//显示在日志fi中
console.log(“PrizeValue”+PrizeValue);//显示在日志文件中
var query=newparse.query(Parse.User);
query.equalTo(“objectId”,User.id);
返回query.first({
成功:功能(结果){
console.log(“updateUserEarnings success”);//从未到达此处
var余额;
如果(结果获取(“现金余额”)){
余额=结果。获取(“现金余额”);
}否则{
余额=0;
}
log(“当前余额”+余额+”表示“+结果.get”(“显示用户名”);
余额=余额+价值;
结果集(“现金余额”,余额);
console.log(“用户”+结果.get(“显示用户名”)+“余额更新:”+余额);
返回结果
},错误:函数(错误){
console.log(“用户更新错误”+错误);//也从未到达此处
返回误差;
}
})
}
var updateWinningsHelper=函数(索引、最后索引、记录){
var winningObject=record.winningObject;
console.log(“Winning对象”+JSON.stringify(winningObj));//显示在日志中
log(“Index:+Index+”lastIndex:+lastIndex);//显示在日志中
如果(索引<最后索引){
updateUserEarnings(winningObj.get(“用户”)、winningObj.get(“联盟”).get(“PrizeValue”))然后(
功能(用户){
console.log(“内部然后函数”);//从未到达
saveAllObjects.push(用户);
},
函数(错误){
console.log(“发生错误”+错误);//从未到达
}
);
winningObj.set(“Leaguewan”,真);
winningObj.set(“isredemed”,true);
}否则{
winningObj.set(“Leaguewan”,假);
}
索引++;
winningObj.set(“排名”,索引);
返回winningObj;
};
感谢您提供的任何帮助,如果您已经从主查询中获得了用户指针,则无需再次查询。我在主查询中包含了用户列,我可以使用正则集函数对该用户进行查询 我所做的只是
var updateUserEarnings = function (User,prizeValue){
//var user = new Parse.User();
User.set("cashBalance", User.get("cashBalance")+prizeValue);
}
希望这对以后的任何人都有帮助,不要像我一样浪费5个小时 很高兴你发现了问题 在讨论这个主题时,您可能希望研究如何消除混合javascript编程范例造成的任何混乱。您使用旧的回调范例以及新的异步操作承诺,这对调试来说是一个混乱
在了解如何尝试执行查询的旧式回调之前,我查看了您的代码相当长的一段时间,然后从查询向调用函数返回承诺,然后在更新帮助程序中使用承诺回调 谢谢,我不知道调试时会让你头疼。我会记住这一点。