在此描述后面的代码中,我试图找到并删除所有这些没有组对象集的错误ListConfig对象。它正确地找到它们,但它不会删除它们。以下代码中是否有我遗漏的内容?
var Groups = [];
function queryForGroups(callback) {
var Group = Parse.Object.extend("Group");
var query = new Parse.Query(Group);
query.limit(1000);
query.find().then(function(result) {
Groups = result;
callback();
});
};
function removeConfigs(){
var Config = Parse.Object.extend("ListConfig");
var query = new Parse.Query(Config);
query.limit(10000);
query.notContainedIn("group", Groups);
query.find().then(function(configs){
return Parse.Object.destroyAll(configs, {useMasterKey:true});
});
}
function removeBadConfigs() {
queryForGroups(function() {
removeConfigs();
});
};
removeBadConfigs();
答案 0 :(得分:0)
关于混合承诺,回调和不必要的全局,代码可能会更清晰一点。除此之外,只要您的数据模型支持它,它看起来应该可以工作。具体来说,ListConfig对象必须具有“group”属性,并且必须为该属性设置Parse.Object值。我见过的最常见的错误是这样的:
var myGroup = // a parse object of type Group
myListConfig.set("group", myGroup.id); // WRONG
myListConfig.set("group", myGroup); // RIGHT
假设你已经做到了,那么为什么你没有看到一些删除是神秘的,但这里的代码是用承诺清理的......
function queryForGroups() {
let query = new Parse.Query("Group")
query.limit(1000);
return query.find();
};
function removeConfigsWithGroups(groups){
let query = new Parse.Query("Config");
query.notContainedIn("group", groups);
return query.find().then(function(configs){
return Parse.Object.destroyAll(configs, {useMasterKey:true});
});
}
function removeBadConfigs() {
return queryForGroups(function(groups) {
return removeConfigsWithGroups(groups);
});
};
removeBadConfigs();
答案 1 :(得分:0)
我明白了。我删除了" useMasterKey:true"因为1)没有提升权限的对象不需要它2)我没有在Cloud Code中运行它。