Parse.com成功/错误未被调用我正在调用一次成功/错误一次,但它不起作用

时间:2015-05-20 02:18:53

标签: javascript ajax parse-platform cloud-code

我正在努力让这个云代码功能正常工作,但我不断收到以下错误:

  

代码:141,消息:“未成功/错误调用”

我肯定是在传递正确的请求对象,所以这不是问题。一切都应该保存正确,但它似乎不喜欢我称之为成功/错误。

这是我的代码:

Parse.Cloud.define("redeemedCustomers", function(request, response) {
    Parse.Cloud.useMasterKey();
    console.log(request.params.consumersToUpdate);
    console.log(request.params.sref);

    _.each(request.params.consumersToUpdate, function (b) {
        var Referred = Parse.Object.extend("User");
        var referralQuery = new Parse.Query(Referred);
        referralQuery.equalTo("objectId", b);
        referralQuery.first().then(function(newbie){
            console.log(newbie);
            newbie.set("ref", request.params.sref);
            newbie.save({
                success: function () {
                    response.success("Credits were given.");
                },
                error: function (error) {
                    response.error(error, "Credits were not given.");
                }
            });
        })
    })
})

2 个答案:

答案 0 :(得分:3)

这是我提出的解决呼叫成功/错误问题的答案。这也是承诺的一个很好的例子:

Parse.Cloud.define("redeemedCustomers", function(request, response) {
    Parse.Cloud.useMasterKey();
    var newbiePromises = [];

    var createNewbie = function(object) {
        var promise = new Parse.Promise();
        var Referred = Parse.Object.extend("User");
        var referralQuery = new Parse.Query(Referred);
        referralQuery.equalTo("objectId", object);
        referralQuery.first().then(function(newbie) {
            newbie.set("ref", request.params.sref);
            promise.resolve(newbie.save())
        }, function(error){
            promise.reject(error);
        });

        return promise;
    }

    _.each(request.params.consumersToUpdate, function(object){
        newbiePromises.push(createNewbie(object));
    });

    Parse.Promise.when(newbiePromises).then(function(){
        response.success("It worked.");
    }, function(error) {
        response.error(error);
    });
})

答案 1 :(得分:-1)

您不能多次调用response.success或错误,并且您只能一次执行一定数量的线程。使用_.each(使用者)时,每次执行referralQuery.first()请求时都会生成一个promise。达到限制后,parse将返回错误,因为在返回第一个promise之前可能已达到限制。此外,如果没有消费者,它将永远不会达到响应。