2017-06-29 37 views
-2

我試圖在解析時設置我的計數器,以便在分數遞減時不會低於零,此時它可以轉到負數。我怎樣才能將最小限制設置爲零?在解析計數器中設置限制爲零

這是我已經設法到目前爲止做:

btnPointTeamD.setOnClickListener(new View.OnClickListener() { 
          @Override 
          public void onClick(View v) { 
           object.increment("team_d_score"); 
           object.saveInBackground(); 
          } 
         }); 

btnMinusTeamC.setOnClickListener(new View.OnClickListener() { 
          @Override 
          public void onClick(View v) { 
           object.increment("team_c_score", -1); 
           object.saveInBackground(); 
          } 
         }); 

回答

1

雲代碼什麼叫做beforeSaveafterSave觸發器。 beforeSave是你在這裏所需要的。

beforeSave觸發器包含所有新數據(注意:沒有舊數據),您可以檢查object.dirty("key");以查看該字段是否已更改。您也不必爲這個特定情況做任何檢查。

Parse.Cloud.beforeSave("ClassName", function(request, response) { 
    var object = request.params.object; 
    if(object.get("team_c_score") < 0) object.set("team_c_score", 0); 
    response.success(); 
}); 

一些注意事項:如果返回response.error(),保存會經歷,所以這是你如何驗證輸入。一個字段包含非法字符,或者你沒有想到的數據?拋出一個錯誤,所以它不會被保存。

你也不應該把任何東西放在成功的迴應。這會導致錯誤。

如果該函數存在,則自動調用此函數,並且將調用總是。你不能跳過它。即使您從儀表板更新數據,也會被調用。與afterSave觸發器一樣,雖然修改這些對象中的對象除非保存,否則不會執行任何操作。

這應該在你的main.js或main.js所需的文件中。我爲每個自定義類都有一個文件夾。每個類都有一個classNameController.js,其中包含beforeSave,afterSave,初始化程序以及與該對象直接相關的任何雲代碼函數。

Main需要這些控制器中的每一個,這將打開所有Parse.Cloud端點到服務器。

託管Parse.com上的beforeSave和afterSave觸發器有3秒超時。我不知道是否有分析服務器超時。我從未測試過它。但是,除了幾個服務器電話以外,不要安全。