parse.com destroyAll 不工作
parse.com destroyAll not working
在此描述之后的代码中,我试图查找并删除所有这些没有组对象集的错误 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();
关于混合承诺、回调和不必要的全局,代码可能会更简洁一些。除此之外,只要您的数据模型支持它,它看起来就应该可以工作。具体来说,您的 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();
我想通了。我删除了 "useMasterKey: true",因为 1) 没有提升权限的对象不需要它,并且 2) 我在 Cloud Code 中没有 运行 它。
在此描述之后的代码中,我试图查找并删除所有这些没有组对象集的错误 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();
关于混合承诺、回调和不必要的全局,代码可能会更简洁一些。除此之外,只要您的数据模型支持它,它看起来就应该可以工作。具体来说,您的 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();
我想通了。我删除了 "useMasterKey: true",因为 1) 没有提升权限的对象不需要它,并且 2) 我在 Cloud Code 中没有 运行 它。