gpt4 book ai didi

parse-platform - 如何删除Parse中满足某些条件的行?

转载 作者:行者123 更新时间:2023-12-04 04:26:33 27 4
gpt4 key购买 nike

有没有办法有效地删除 Parse 中执行类似 SQL 语句的行?

DELETE FROM table WHERE delete_me = 1

我试过这个,但它很慢:
var query = new Parse.Query('table');
query.equalTo('delete_me', 1);

query.each(function(obj) {

return obj.destroy();

}).then(function() {
// Done
}, function(error) {
// Error
});

最佳答案

差不多了:find() 将获得满足删除条件的对象,然后 destroyAll() 将销毁它们。

var query = new Parse.Query('table');
query.equalTo('delete_me', 1);
query.find().then(function(results) {
return Parse.Object.destroyAll(results);
}).then(function() {
// Done
}, function(error) {
// Error
});

编辑 - 要删除超过 1k 的表,需要额外的一些 promise 工作。这个想法是通过表游标,以 1k 的批次(或一些较小的增量)对发现进行分组,使用 Promise.when() 同时执行这些发现,然后以相同的方式同时销毁结果......
var query = new Parse.Query('table');
query.equalTo('delete_me', 1);
query.count().then(function(count) {
var finds = [];
for (var i=0; i<count; i+=1000) {
finds.push(findSkip(i));
}
return Parse.Promise.when(finds);
}).then(function() {
var destroys = [];
_.each(arguments, function(results) {
destroys.push(Parse.Object.destroyAll(results));
});
return Parse.Promise.when(destroys);
}).then(function() {
// Done
}, function(error) {
// Error
});

// return a promise to find 1k rows starting after the ith row
function findSkip(i) {
var query = new Parse.Query('table');
query.limit(1000);
query.equalTo('delete_me', 1);
query.skip(i);
return query.find();
}

编辑 2 - 这可能更快,但您需要凭经验发现:
// return a promise to delete 1k rows from table, promise is fulfilled with the count deleted
function deleteABunch() {
var query = new Parse.Query('table');
query.limit(1000);
query.equalTo('delete_me', 1);
query.find().then(function(results) {
return Parse.Object.destroyAll(results).then(function() {
return results.length;
});
});
}

function deleteAll() {
return deleteABunch().then(function(count) {
return (count)? deleteAll() : Parse.Promise.as();
});
}

关于parse-platform - 如何删除Parse中满足某些条件的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28934448/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com