我知道我以前使用过Parse.Object.destroyAll()并取得了很大的成功。它做了它应该做的事情,并摧毁了你经过的所有物体。
但是,我目前正在运行以下代码:
Parse.Cloud.job("deleteStuff", function( request, status )
{
Parse.Cloud.useMasterKey();
var stuffQuery = new Parse.Query("Stuff");
var success = new Parse.Promise();
var failure = new Parse.Promise();
stuffQuery.doesNotExist("User");
stuffQuery.limit(1000);
stuffQuery.find
(
function( stuffs )
{
console.log("There are " + stuffs.length + " stuffs found.");
return Parse.Object.destroyAll( stuffs ).then
(
function()
{
success.resolve("destroyed all the stuffs");
},
function( error )
{
failure.reject("There was an error destroying the stuffs: " + error.message);
return failure;
}
);
},
function( error )
{
failure.reject("There was an error querying for the stuffs: " + error.message);
return failure;
}
).then
(
function( success )
{
status.success( "deleted all the stuffs with no users" );
},
function( error )
{
status.error( error );
}
);
});
很简单。查询任何未附加用户的"Stuff"对象。删除所有结果。有一个控制台日志,用于打印查询返回的数组中有多少对象。它告诉我有超过 400 个对象要删除。
但是,当我刷新仪表板时,总数仅减少了 20。我已经运行了多次,每次它只删除了 20 次。
这是在我们的测试服务器上运行的,我需要它在我的实时服务器上运行,其中有超过 3000 个这样的对象,没有附加用户......我不会一次删除 3000 个对象 20 个......
知道为什么或何时Parse.Object.destroyAll在这里不起作用吗?
试试这个
Parse.Cloud.job("deleteStuff", function( request, status )
{
Parse.Cloud.useMasterKey();
var stuffQuery = new Parse.Query("Stuff");
stuffQuery.doesNotExist("User");
stuffQuery.limit(1000);
stuffQuery.each(function(stuff)
{
return stuff.destroy();
}
).then(function()
{
status.success( "deleted" );
}
).then(function(error) {
status.error("Error: " + error.code + " " + error.message);
});
});