parse.com destroyAll不工作

时间:2018-02-09 19:31:42

标签: parse-platform

在此描述后面的代码中,我试图找到并删除所有这些没有组对象集的错误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();

2 个答案:

答案 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中运行它。