您好我有一个将照片上传到服务器的应用程序。 Parse只给我们20gb的存储空间,所以我不想超过这个限制。我想要服务器,以便它可以删除文件,如果它是3天。所以这是代码
Parse.Cloud.job('deleteOldPosts', function(request, status) {
// All access
Parse.Cloud.useMasterKey();
var today = new Date();
var days = 10;
var time = (days * 24 * 3600 * 1000);
var expirationDate = new Date(today.getTime() - (time));
var query = new Parse.Query('post');
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) {});
});
但是,如果我使用此代码,它将删除所有类中的文件。我只想让这段代码只用于一个类。是否可以这样做?
答案 0 :(得分:1)
删除云代码中的对象时,请使用query.each
代替query.find
,以确保删除与查询匹配的所有对象。
find
具有默认返回的100个对象的查询限制(如果使用limit
则最多为1000个)。 Source
以下是使用promise链的更新代码,该链在每个destroy
对象上调用Post
。当所有的销毁承诺完成后,将达到成功状态,如果任何的销毁失败,则将达到错误状态。
Parse.Cloud.job('deleteOldPosts', function(request, status) {
// All access
Parse.Cloud.useMasterKey();
var today = new Date();
var days = 10;
var time = (days * 24 * 3600 * 1000);
var expirationDate = new Date(today.getTime() - (time));
var query = new Parse.Query('post');
query.lessThan('createdAt', expirationDate);
query.each(function(post) {
return post.destroy();
}).then(function() {
console.log("Delete job completed.");
status.success("Delete job completed.");
}, function(error) {
alert("Error: " + error.code + " " + error.message);
status.error("Error: " + error.code + " " + error.message);
});
});