从Parse Cloud中销毁对象是不可靠的

时间:2015-10-23 17:07:54

标签: javascript backbone.js parse-platform

我试图删除类中的所有对象,但每当我尝试从云函数或作业中删除对象时,我都会得到不一致的对象数。工作总是低于第二,所以我不认为这是问题(无论如何使用100个以下的对象)。我似乎总是留下随机数量的对象,没有错误。这就是我现在正在使用的。

Parse.Cloud.job("deletePosts", function(request, status) {

  Parse.Cloud.useMasterKey();
  var query = new Parse.Query("Posts");
  query.find({
      success: function(results) {
        Parse.Object.destroyAll(results).then(function() {
              console.log("Delete job completed.");
              status.success("Delete job completed.");
          });
      },
      error: function(error) {
          console.log("Error in delete query error: " + error);
          status.error("Error in delete query error: " + error);
      }
  });

});

1 个答案:

答案 0 :(得分:1)

删除云代码中的对象时,请使用query.each代替query.find,以确保删除与查询匹配的所有对象。

find具有默认返回的100个对象的查询限制(如果使用limit则最多为1000个)。 Source

下面是使用在每个destroy对象上调用Post的promise链的示例。当所有的销毁承诺完成后,将达到成功状态,如果任何的销毁失败,则将达到错误状态。

Parse.Cloud.job("deletePosts", function(request, status) {

  Parse.Cloud.useMasterKey();
  var query = new Parse.Query("Posts");
  query.each(function(post) {
      return post.destroy();
  }).then(function() {
      console.log("Delete job completed.");
      status.success("Delete job completed.");
  }, function(error) {
      alert("Error: " + error.code + " " + error.message);
      status.error("Error: " + error.code + " " + error.message);
  });

});