rashadb
rashadb

Reputation: 2543

Why isn't my function working in Parse Cloud Code? It works when I test in Angular and Express

Why is my code not progressing? I tested it in both Angular and Express and the code progressed limited only by the inability to edit the User table with new data because the Master Key is necessary. Where am I going wrong?

Parse.Cloud.define("someFunction", function(request, response) {

Parse.Cloud.useMasterKey();

var user = Parse.Object.extend("User");
var query = new Parse.Query(Parse.User);
var Table1 = Parse.Object.extend("Table1");
var table1Query = new Parse.Query(Table1);
var Table2 = Parse.Object.extend("Table2");
var table2Query = new Parse.Query(Table2);

var Ids = request.params.data; //this is an array of Parse.Object Ids

var array = [];

var x = Ids.length;

while (x--){
var Id = Ids[x];
console.log("This is active");//I know this working
table1Query.equalTo("user", {__type: "Pointer", className: "_User",                                                                              
                             objectId: Id});
table1Query.find({
success: function (results) {
         var resultIds = _.map(results, function (n) {
                           return n.id});

         var resultObjs = _.map(results, function (n) {
                           return return _.extend(_.find(n), {id: n.id})});

var a = resultIds.length;
while (a--) {
var resultId = resultIds[a];
console.log("I don't know why this is not coming up!?!");//Why isn't this working?
table2Query.equalTo("user", {__type: "Pointer", className: "_User",                                                                              
                             objectId: resultId});
table2Query.find({
success: function (items) {
var MA = _.map(_.flatten(items), function (n) {
return _.find(n)});

var step3 = _.map(resultObjs, function (n) {return _.extend(n, {
Matched: _.filter(MA, function (a) {return a.result.id == n.id})})});

var total = Math.round(_.reduce(_.map(step3, function (n) {return n.Bill
}), function (memo, num) {return memo + num;}, 0) * 100) / 100;

var duty = function (total, id) {
var promise = new Parse.Promise();
table2Query.get(id, {
success: function (Answer) {
Answer.set("duty", total);
Answer.save().then(function (difresult) {
response.success(difresult);
}, function (error) {
response.error(error);})
}
});
}
    array.push(duty(Answer, Id));
    }
})
}
}
})
}
return 

Parse.Promise.when(array).then(function() {
    response.success("Successfully retrieved Total Bills.");
},
    function(error) {
        response.error("Something is still wrong");
        console.log(error);
    });;
    })

Upvotes: 0

Views: 98

Answers (1)

Ralphilius
Ralphilius

Reputation: 1856

Let's fix some coding errors first before I can continue.

Add ';' at the end of the below code.

 var Ids = req.params.data
 var x = Ids.length
 var a = resultIds.length
 array.push(duty(Answer, Id))

Then change req to request

 var Ids = req.params.data

to

 var Ids = request.params.data

Upvotes: 1

Related Questions