2014-02-20 105 views
2

我想清除所有超过一天的对象....因此我使用了下面给出的云代码。 我的项目中有很多类,但下面的代码仅适用于类“消息”。 即,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

“你只能执行云代码异步操作的数量有限。通过调用一个循环,你可能会遇到这种限制的destroy()反复。” - Hector From Parse

我建议首先你的云代码转换为“工作”,让您的超时是15分钟VS 15秒,然后更换destroy()方法有:

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

你是什么意思将云代码转换为“工作”? – 2014-08-27 23:37:26

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