首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不运行在分析CloudCode中的嵌套查询

不运行在分析CloudCode中的嵌套查询
EN

Stack Overflow用户
提问于 2015-10-21 22:01:27
回答 1查看 28关注 0票数 0

我正在创建一个iOS应用程序,我使用Parse作为我的后端。这个应用程序基本上可以让人们挑战朋友的睡眠时间超过x小时。

我正在编写我的处理函数("betWinner3"),它应该计算打赌/挑战的胜利者。详细信息是:我正在查询一个基于objectId的打赌,我正在比较"betTime“和"hoursSlept".From --这个查询,我还在”更好“下记录用户名,在”休眠“.If下记录用户名--否则语句计算三种可能的场景。在每个条件/场景中,我对"User“类进行另外两个查询,以更新”更好“和”休眠“的点。

当我运行该代码时,我的函数成功地运行,它进入if- gets语句,但它不会等待我的另外两个查询吐出它们的结果。

如果能帮助解决这个问题,我们将不胜感激。我刚接触过Javascript和Parse。谢谢

代码:

代码语言:javascript
复制
Parse.Cloud.define("betWinner3", function(request,response){

    var objectId=request.params.objectId;
    var query=new Parse.Query("betClass");
    query.equalTo("objectId",objectId);
    query.first({

        success:function(bet){

            var better=bet.get("better");
            var sleeper=bet.get("sleeper");
            console.log('start!!!');

            if (parseInt(bet.get("betTime")) < parseInt(bet.get("hoursSlept"))){
                console.log('sleeper wins');
                var queryUser= new Parse.Query(Parse.User);
                queryUser.equalTo("username",better);
                queryUser.first({
                    sucess:function(user){
                        var userPoints=parseInt(user.get("points"));
                        userPoints ++;
                        userBetPoints=userPoints.toString();
                        user.set("points",userBetPoints);
                        console.log("111111111111");
                        user.save();
                        response.success("Success Message");

                    },
                    error:function(error){
                        response.error("Error Message");
                    }
                });

                console.log('sle');
                var queryUser= new Parse.Query(Parse.User);
                queryUser.equalTo("username",sleeper);
                queryUser.first({
                    sucess:function(user){
                        var userPoints=parseInt(user.get("points"));
                        userPoints ++;
                        userBetPoints=userPoints.toString();
                        user.set("points",userBetPoints);
                        console.log("22222222222");
                        user.save();
                        response.success("Success Message");

                    },
                    error:function(error){
                        response.error("Error Message");
                    }
                });

            }

            else if (parseInt(bet.get("betTime")) === parseInt(bet.get("hoursSlept"))){
                console.log('tiessssss');
                var queryUser= new Parse.Query(Parse.User);
                queryUser.equalTo("username",better);
                queryUser.first({
                    sucess:function(user){
                        var userPoints=parseInt(user.get("points"));
                        userPoints ++;
                        userBetPoints=userPoints.toString();
                        user.set("points",userBetPoints);
                        console.log("333333333333");
                        user.save();
                        response.success("Success Message");

                    },
                    error:function(error){
                        response.error("Error Message");
                    }
                });

                console.log("lol");
                var queryUser= new Parse.Query(Parse.User);
                queryUser.equalTo("username",sleeper);
                queryUser.first({
                    sucess:function(user){
                        var userPoints=parseInt(user.get("points"));
                        userPoints +=0;
                        userBetPoints=userPoints.toString();
                        user.set("points",userBetPoints);
                        console.log("4444444");
                        user.save();
                        response.success("Success Message");

                    },
                    error:function(error){
                        response.error("Error Message");
                    }
                });

            }

            else {
                console.log("better wins");
                var queryUser= new Parse.Query(Parse.User);
                queryUser.equalTo("username",better);
                console.log("You are in");
                queryUser.first({
                    sucess:function(user){
                        var userPoints=parseInt(user.get("points"));
                        userPoints +=2;
                        userBetPoints=userPoints.toString();
                        user.set("points",userBetPoints);
                        console.log("55555555");
                        user.save();
                        console.log("aaaaaaa");
                        response.success("Success Message");

                    },
                    error:function(error){
                        response.error("Error Message");
                    }
                });

                var u=0;
                for(i=0; i<1000000;i++){
                u=i;
                }

                console.log("lmfao");
                var queryUser= new Parse.Query(Parse.User);
                queryUser.equalTo("username",sleeper);
                queryUser.first({
                    sucess:function(user){
                        var userPoints=parseInt(user.get("points"));
                        userPoints --;
                        userBetPoints=userPoints.toString();
                        user.set("points",userBetPoints);
                        console.log("6666666");
                        user.save();
                        console.log("bbbbbbbb");
                        response.success("Success Message");

                    },
                    error:function(error){
                        response.error("Error Message");
                    }
                });

            }


            console.log("wiiiiiiiiiiiiiii");
            response.success("Success Message %%%%%%%");

        },
        error:function(error){
            response.error("Error Message");
        }
    });
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-21 22:14:12

问题是在嵌套查询完成之前正在调用response.success()

具体来说,这些行在第一个查询返回时就会被调用。

代码语言:javascript
复制
console.log("wiiiiiiiiiiiiiii");
response.success("Success Message %%%%%%%");

一旦调用了success,函数就结束了。您可以通过将success调用移到嵌套查询中的独占位置来解决这个问题。或者更好的是,看看Parse是如何实现应许的--它们确实可以帮助组织代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33270037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档