[英]How to delete objects in parse.com after a set amount of time
基本上我想知道如何在一段時間后刪除服務器上的對象主要的想法是知道如何在服務器自動指定時間之后刪除對象,這樣對象就不會持續很長時間。
謝謝。
您必須創建一個“工作”,這是您可以從您的parse.com帳戶安排的任務。
這是一個示例代碼,它刪除所有帖子有70天以上。
Parse.Cloud.job('deleteOldPosts', function(request, status) {
// All access
Parse.Cloud.useMasterKey();
var today = new Date();
var days = 70;
var time = (days * 24 * 3600 * 1000);
var expirationDate = new Date(today.getTime() - (time));
var query = new Parse.Query('post');
// All posts have more than 70 days
query.lessThan('createdAt', expirationDate);
query.find().then(function (posts) {
Parse.Object.destroyAll(posts, {
success: function() {
status.success('All posts are removed.');
},
error: function(error) {
status.error('Error, posts are not removed.');
}
});
}, function (error) {});
});
您必須在main.js文件中編寫此代碼,請按照以下步驟操作: https ://parse.com/docs/cloud_code_guide#started
在解析上傳main.js文件后,您可以安排工作。
這很簡單,在列表中選擇您的工作名稱,您可以計划何時啟動工作,每小時,每天......
Parse.Cloud.useMasterKey(); 已在Parse Server版本2。0。0(2016年12月7日)中棄用。 從那個版本開始,它是一個無操作(它什么都不做)。 您現在應該將{useMasterKey:true}可選參數插入到需要覆蓋代碼中的ACL或CLP的每個方法中。
我最終使用了與Bluety代碼非常相似的代碼,但進行了一些修改:
Parse.Cloud.job('deleteOldActivityLog', function(request, status) {
var today = new Date();
var days = 70;
var time = (days * 24 * 3600 * 1000);
var expirationDate = new Date(today.getTime() - (time));
var query = new Parse.Query('ActivityLog');
// All records created more than 70 days ago
query.lessThan('createdAt', expirationDate);
query.each(function(record) {
return record.destroy({useMasterKey:true});
},{useMasterKey:true}).then(function(result) {
console.log("deleteOldActivityLog job completed.");
status.success("deleteOldActivityLog job completed.");
}, function(error) {
alert("Error in deleteOldActivityLog: " + error.code + " " + error.message);
status.error("Error in deleteOldActivityLog: " + error.code + " " + error.message);
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.