基本上我想知道如何在一段时间后删除服务器上的对象主要的想法是知道如何在服务器自动生成某个指定时间后删除对象,这样对象就不会长时间存在时间
感谢。
答案 0 :(得分:13)
您必须创建“工作”,这是您可以从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文件后,您可以安排工作。
这很简单,在列表中选择您的工作名称,您可以计划何时启动工作,每小时,每天......
答案 1 :(得分:2)
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);
});
});