Parse.com cloudcode 从不输入成功/错误

Posted

技术标签:

【中文标题】Parse.com cloudcode 从不输入成功/错误【英文标题】:Parse.com cloudcode never entering success/error 【发布时间】:2014-11-12 16:26:41 【问题描述】:

我在我的解析云中运行了这段代码,当我从我的应用程序中调用它时,它永远不会进入成功或错误语句。可能是因为 .save 不起作用?

非常感谢任何帮助:)

这就是我调用云函数的方式:

[PFCloud callFunctionInBackground:@"addFeeling"
                   withParameters:@@"userId"           : [[PFUser currentUser]objectId],
                                    @"relationShipId"   : _friendship.objectId,
                                    @"tagId"            : [NSNumber numberWithInt:tag],
                                    @"reason"           : @"Hardcoded HomeView(409)",
                                    @"value"            : [NSNumber numberWithInt:value]
                            block:^(NSString *result, NSError *error) 
                                if (!error) 
                                    DLog(@"results :%@", result);
                                
                                else
                                    DLog(@"Error : %@", error);
                                
                            ];

这就是云功能本身:

Parse.Cloud.define("addFeeling", function(request, response) 
    var userId         = request.params.userId;
    var relationShipId = request.params.friendshipId;
    var tagId          = request.params.tagId;
    var reason         = request.params.reason;
    var value          = request.params.value;

    var Feels = Parse.Object.extend("Feels");
    var feeling = new Feels();
    feeling.set("id_friendship", relationShipId);
    feeling.set("value", value);
    feeling.set("tag", tagId);
    feeling.set("reason", reason);
    feeling.save(
        success: function () 
            var query = new Parse.Query("Feels");
            query.equalTo("id_friendship", relationShipId);
            query.find(
                success: function(results) 
                    if(results.length > 0)
                    
                        result = results[0];
                        if(result.get("userFrom") == userId)
                            result.set("scoreTo"  , result.get("scoreTo") + value);
                        else
                            result.set("scoreFrom", result.get("scoreFrom") + value);
                        result.save();
                    
                
            );
            console.log("Save ok");
        ,
        error: function (error) 
            response.error(error);
            console.log("Save ko");
        
    );
);

这可能真的很简单,但我根本不习惯 JS。

我得到的错误是代码:141,输入成功/错误。

【问题讨论】:

【参考方案1】:

当你的函数完成了你打算做的事情时,你应该调用response.success()response.error()来表明你已经完成了。

您已经在为出现错误的情况执行此操作,但不是在实际处理查询结果时执行此操作。

【讨论】:

以上是关于Parse.com cloudcode 从不输入成功/错误的主要内容,如果未能解决你的问题,请参考以下文章

将 URL 更改为文件(Parse.com 使用 Javascript CloudCode)

在 Parse CloudCode 中删除对象的所有子项

从 Parse.com 云代码(Javascript SDK)获取信息的最佳方式

Parse.com Facebook 授权从不调用完成处理程序

Parse.com - 为单个用户设置推送通知

如何使用 Cloud Code 删除 Parse.com 中的角色