2015-10-23 38 views
2

我試圖刪除一個類中的所有對象,但每當我嘗試從雲功能或作業中刪除對象時,我都會得到不一致的剩餘對象數量。工作總是處於第二位,所以我不認爲這是問題(無論如何都要處理100個對象)。我似乎總是有隨機數量的對象遺留下來,沒有錯誤。這就是我現在正在處理的事情。從Parse Cloud中銷燬對象是不可靠的

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

當刪除雲代碼對象,使用query.each代替query.find,以確保您刪除查詢相匹配的所有對象。

find具有100個默認返回對象的查詢限制(如果使用limit,則最多返回1000個)。 Source

以下是使用承諾鏈的示例,該承諾鏈在每個Post對象上調用destroy。當銷燬承諾全部已完成時,將達到成功狀態,並且如果任何銷燬失敗,則將達到錯誤狀態。

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); 
    }); 

}); 
+0

工作就像一個魅力,謝謝! – Vanny