2016-04-14 60 views
-1

即時通訊新的javascript,但我不是很確定我是如何失蹤的成功/錯誤的電話,我看透了,它看起來都對我打電話。成功/錯誤不叫

Parse.Cloud.job("UpdateWeekData", function(request, response) { 
var weeks = []; 
var weekCount = 0; 
var weekQuery = new Parse.Query("WeekList"); 

weekQuery.find({ 
    success: function(results) { 
     for (week in results) { 
      var weekCount = Parse.Query("Schedule"); 
      weekQuery.equalTo("weekObj", week); 
      weekQuery.count({ 
       success:function(count) { 
        var max = week.get("maxAppts"); 
        week.set("apptsRemain", (max - count)); 
        week.set("numApptsSch", count); 
        week.save(); 
       }, 
       error: function(error) { 
        response.error(error.message); 
       } 
      }); 
     } 
    } , 
    error: function(error) { 
     response.error(error.message); 
    } 
}); 
}); 

任何想法,我錯過了電話?解析雲代碼說「成功/錯誤未被調用」

回答

0

因爲它是後臺作業,所以應該調用status.error()status.success(),如this示例。

在你的代碼中的問題是,你實際上並沒有在任何地方撥打status.success()。功能完成後,您必須始終撥打status.error()status.success()。在每個循環中調用Parse Query使其變得有點複雜(並且它可以使很多請求!),因爲你沒有等待weekQuery.count完成。另外使用計數通常是not recommended

您還應該瞭解promises是如何工作的,以便您知道如何等待查詢並在完成所有工作時調用錯誤/成功 - 如果在查詢完成前調用成功/錯誤,它將被中止。

也許你應該在數據庫中實現你自己的計數邏輯,或者你可以查詢哪裏weekObj等於任何結果,找到所有對象,然後爲每個檢索到的對象,你可以得到「weekObj」字段來知道哪一個結果是它等於。但請記住,默認返回100個對象,最多1000個對象(如果您使用的是parse.com而不是Parse Server):

weekQuery.equalTo("weekObj", results); 
weekQuery.find();