2015-04-07 89 views
0

我想使用雲代碼有條件地更新幾個Parse.Objects。該功能應該將選擇數據保存到新列中,如果它適用於有問題的用戶。解析雲代碼錯誤:Parse.Error {code:141,消息:「成功/錯誤未被調用」}

我在第一個Cloud Code函數中遇到了一些嚴重的問題。我認爲我的大部分都是正確的,但是我一直在獲得成功/失敗並不是所謂的錯誤。

我用下面的代碼:

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

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 = req.body //this is an array of Parse.Object Ids 

var array = []; 

var x = Ids.length 

while (x--){ 
var Id = Ids[x]; 

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]; 

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); 
}) 

回答

0

我希望這是有益的人一天。代碼中的答案/差異將在我添加的最後找到。然後放置響應。成功/錯誤:

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

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 = req.body //this is an array of Parse.Object Ids 

var array = []; 

var x = Ids.length 

while (x--){ 
var Id = Ids[x]; 

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]; 

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); 
    });; 
    })