基本上,我想知道如何在一段时间后删除服务器上的对象,主要思想是知道如何在指定的时间后从服务器自动删除对象,这样对象就不会持续很长时间。
谢谢。
发布于 2015-03-28 17:48:14
你必须创建一个“作业”,这是一个你可以从你的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#startedAfter你main.js文件是上传在解析器,你可以安排你的工作。
它很简单,在列表中选择您的作业名称,您可以计划何时启动作业,每小时,每一天。
发布于 2017-06-01 00:42:50
解析服务器版本2.3.0 (2016年12月7日)中已弃用Parse.Cloud.useMasterKey();。从那个版本开始,它就是一个no-op (它什么也不做)。现在,您应该将{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);
});
});
发布于 2021-09-10 03:17:21
您可能希望检查您的数据库是否可以处理删除。例如,在MongoDB中,您可以使用TTL索引,以便在x个时间量之后删除文档。
https://stackoverflow.com/questions/29315398
复制相似问题