Javascript Parse..com云代码:尝试更新用户';但是什么也没发生

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

我有一份背景工作,如果他们赢得联赛,我会尝试用新的平衡来更新用户平衡

这些函数是正确调用的帮助函数,但从未调用UpdateUserLearning函数中的“query.first”和updateWinningsHelper中的“then”函数,至少日志中没有显示任何内容。是的,我是用户万能钥匙

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编程范例造成的任何混乱。您使用旧的回调范例以及新的异步操作承诺,这对调试来说是一个混乱


在了解如何尝试执行查询的旧式回调之前,我查看了您的代码相当长的一段时间,然后从查询向调用函数返回承诺,然后在更新帮助程序中使用承诺回调

谢谢,我不知道调试时会让你头疼。我会记住这一点。