2014-11-14 96 views
1

我有一些afterSave代碼在parse.com上運行,它出現喲運行它兩次。Parse.com雲代碼 - afterSave運行兩次

這裏是雲代碼:

Parse.Cloud.afterSave("Review", function(request) { 
    var query = new Parse.Query("ReviewAverage"); 
    query.equalTo("vendor", request.object.get("vendor")); 
    query.find({ 
     success: function(average) { 
      if (average.length === 1){ 
       average = average[0]; 
       average.increment("numReviews"); 
       var currentTotal = average.get("totalScore") + request.object.get("rating"); 
       var currentAverage = currentTotal/average.get("numReviews"); 
       average.set("totalScore", currentTotal) ; 
       average.set("averageScore", currentAverage) ; 
       average.save(); 
      } else { 
       var average = new Parse.Object("ReviewAverage"); 
       average.set("vendor", request.object.get("vendor")); 
       average.set("numReviews", 1); 
       average.set("totalScore", request.object.get("rating")); 
       average.set("averageScore", request.object.get("rating")); 
       average.save(); 
      } 
     }, 
     error: function(e){ 
      console.error("Error updating averages: " + e); 
     } 
    }); 
}); 

我有我的審查表,還,而不是(按類型的功能解析犯規支持組)計算的評論的平均值在飛行的同一個項目我有另一個表只記錄一個項目的運行平均值(由供應商鍵入)。

我注意到ReviewAverage列中給定供應商的numReviews與相同vendo存在的實際評論數之間存在一些差異。

尋找在日誌中,我看到的東西,如下列:

I2014-11-14T08:08:45.818Z] v13: after_save triggered for Review for user dA73DS733H 
    Input: {"author":{"className":"_User","objectId":"dA73DS733H","__type":"Pointer"},"createdAt":"2014-11-14T08:08:45.815Z","objectId":"j1wfWfQabv","rating":7,"review":"Lacking pigs in blankets and would have benefitted from more crunchy stuffing but otherwise good - the healthy Christmas option.","updatedAt":"2014-11-14T08:08:45.815Z","vendor":"Pret - Christmas veggie lunch","ACL":{"dA73DS733H":{"read":true,"write":true},"*":{"read":true}}} 
    Result: Success 
I2014-11-14T08:08:46.278Z] v13: after_save triggered for Review for user dA73DS733H 
    Input: {"author":{"__type":"Pointer","className":"_User","objectId":"dA73DS733H"},"rating":7,"review":"Lacking pigs in blankets and would have benefitted from more crunchy stuffing but otherwise good - the healthy Christmas option.","vendor":"Pret - Christmas veggie lunch","createdAt":"2014-11-14T08:08:45.815Z","updatedAt":"2014-11-14T08:08:46.260Z","objectId":"j1wfWfQabv","ACL":{"*":{"read":true},"dA73DS733H":{"read":true,"write":true}}} 
    Result: Success 

我已經看到有問題的一些人,因爲他們正在重新保存在afterSave功能 - 但我的節省是永遠只給ReviewAverage對象,所以不應該有任何理由再次觸發?

我錯過了什麼嗎?

回答

1

我遇到了afterSave的問題,其中用指向現有對象(Y類型)的指針創建新對象(類型X)導致對象(類型Y)上的afterSave觸發。

所以,如果我保存這兩個對象,它似乎像afterSave被觸發兩次。

ReviewAverage類指針類中的任何列?

+0

任何解決方案如何不觸發afterSave指針保存? Tnx – DaNLtR 2016-01-10 12:34:04

+1

@DaNLtR我還沒有能夠修復它,只是使用了一種不同的方法......但我讀解析開發人員郵件時發現,這個問題已在最新的分析版本中修復。我沒有自己測試過。 – Mars 2016-01-10 12:37:39