在一定时间后从特定 class 中删除对象 inParse
delete objects inParse after a set amount of time from a specific class
您好,我有一个可以将照片上传到服务器的应用程序。 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) {});
});
但是,如果我使用此代码,它将删除所有 classes 中的文件。我只希望此代码仅适用于一个 class。可以这样做吗?
在云代码中删除对象时,使用 query.each
而不是 query.find
以确保删除所有匹配查询的对象。
find
的查询限制为默认返回 100 个对象(如果使用 limit
,则最多为 1000 个)。 Source
下面是您更新后的代码,它使用了对每个 Post
对象调用 destroy
的承诺链。当 all 的 destroy promise 完成时,将达到成功状态,如果 any 的 destroy 失败则达到错误状态.
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);
});
});
您好,我有一个可以将照片上传到服务器的应用程序。 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) {});
});
但是,如果我使用此代码,它将删除所有 classes 中的文件。我只希望此代码仅适用于一个 class。可以这样做吗?
在云代码中删除对象时,使用 query.each
而不是 query.find
以确保删除所有匹配查询的对象。
find
的查询限制为默认返回 100 个对象(如果使用 limit
,则最多为 1000 个)。 Source
下面是您更新后的代码,它使用了对每个 Post
对象调用 destroy
的承诺链。当 all 的 destroy promise 完成时,将达到成功状态,如果 any 的 destroy 失败则达到错误状态.
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);
});
});