2014-02-20 2 views
2

나는 1 일 이상 오래된 모든 개체를 지우고 싶었습니다. 그래서 아래 주어진 클라우드 코드를 사용했습니다. 내 프로젝트에는 많은 클래스가 있지만 아래 코드는 'Messages'클래스에서만 작동합니다. . 즉, Parse.Object.extend ("Messages")에 언급 된 클래스 이름입니다.Parse.com에있는 모든 이전 개체를 삭제하십시오.

내 프로젝트의 모든 클래스를 반복하고 1 일 넘은 데이터를 삭제하려고했습니다. 프로젝트의 모든 클래스를 반복하고 각 클래스에 대해 동일한 코드를 실행할 수 있습니까?

// Use Parse.Cloud.define to define as many cloud functions as you want. 
// For example: 

Parse.Cloud.job("deleteOldEntries", function(request, status) {  
var yourObject = Parse.Object.extend("Messages"); 
var query = new Parse.Query(yourObject);  
var day = new Date(); 
day.setDate(day.getDate() - 1);  
query.lessThan("createdAt", day);  
    query.find 
    ({ 
      success:function(results) 
      { 
       for (var i = 0, len = results.length; i < len; i++) 
       { 
        var result = results[i]; 
        result.destroy(); 
        console.log("Destroy: "+i); 
       } 
      status.success("Delete successfully.");    
      }, 
      error: function(error) 
      { 
      status.error("Uh oh, something went wrong."); 
      console.log("Failed!");   
      } 
    })  
}); 

답변

1

"당신은 클라우드 코드에서 비동기 작업의 제한된 양을 수행 할 수 있습니다. 루프,이 제한에 실행할 가능성이있어에서 반복) (파괴 호출하여." - Hector From Parse

나는 당신의 제한 시간 15 분 대 15 초입니다 있도록 "작업"을 클라우드 코드를 변환하는 첫 번째 제안

, 다음으로) (파괴 교체 :

myObject.destroy({ 
    success: function(myObject) { 
    // The object was deleted from the Parse Cloud. 
    }, 
    error: function(myObject, error) { 
     // The delete failed. 
     // error is a Parse.Error with an error code and description. 
    } 

}); 

그리고 때까지 삭제를 계속 기다립니다 당신은 콜백을 받았습니다.

+0

"업무"로 변환하는 것은 무엇을 의미합니까? –

+0

@ user3961466 - https://parse.com/docs/cloud_code_guide#jobs-writing – Logan

3

이 코드를 사용하면 매우 유용합니다.

Parse.Cloud.job("deleteMessages", function(request, status) 

Parse.Cloud.useMasterKey(); 

var ts = Math.round(new Date().getTime()/1000); 
var tsYesterday = ts - (24 * 3600); 
var dateYesterday = new Date(tsYesterday*1000); 

var query = new Parse.Query("Your Object Class"); 

query.lessThan("createdAt", dateYesterday); 

query.find({ 
    success: function(result) { 
     for(var i=0; i<result.length; i++) { 
      result[i].destroy({ 
       success: function(object) { 
        status.success("Delete job completed"); 
        alert('Delete Successful'); 
       }, 
       error: function(object, error) { 
        status.error("Delete error :" + error); 
        alert('Delete failed'); 
       } 
      }); 
     } 
     status.success("Delete job completed"); 
    }, 
    error: function(error) { 
     status.error("Error in delete query error: " + error); 
     alert('Error in delete query'); 
    } 
}); 
}); 
관련 문제