我试图删除类中的所有对象,但每当我尝试从云函数或作业中删除对象时,我都会得到不一致的对象数。工作总是低于第二,所以我不认为这是问题(无论如何使用100个以下的对象)。我似乎总是留下随机数量的对象,没有错误。这就是我现在正在使用的。
Parse.Cloud.job("deletePosts", function(request, status) {
Parse.Cloud.useMasterKey();
var query = new Parse.Query("Posts");
query.find({
success: function(results) {
Parse.Object.destroyAll(results).then(function() {
console.log("Delete job completed.");
status.success("Delete job completed.");
});
},
error: function(error) {
console.log("Error in delete query error: " + error);
status.error("Error in delete query error: " + error);
}
});
});
答案 0 :(得分:1)
删除云代码中的对象时,请使用query.each
代替query.find
,以确保删除与查询匹配的所有对象。
find
具有默认返回的100个对象的查询限制(如果使用limit
则最多为1000个)。 Source
下面是使用在每个destroy
对象上调用Post
的promise链的示例。当所有的销毁承诺完成后,将达到成功状态,如果任何的销毁失败,则将达到错误状态。
Parse.Cloud.job("deletePosts", function(request, status) {
Parse.Cloud.useMasterKey();
var query = new Parse.Query("Posts");
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);
});
});