2015-07-13 138 views
0

在我刪除我的用戶之前,我想刪除另一個類中的一些對象。這在Swift中工作正常。解析,雲代碼beforeDelete

class func deleteAnonymousUserListSettings(completetion:(result:Bool, error:NSError!) -> Void){ 
    var queryListSettings = PFQuery(className: "ListSettings") 
    queryListSettings.findObjectsInBackgroundWithBlock { (objects: [AnyObject]?, error: NSError?) -> Void in 
     if let objs = objects as? [PFObject] where error == nil { 
      PFObject.deleteAllInBackground(objs, block: { (success, error) -> Void in 
       if success{ 
        completetion(result: success, error: error) 
       } 
      }) 
     } 
    } 
} 

現在我想轉移到cloudCode。它的工作原理大約有十分之一,但我不知道爲什麼或什麼時候有效,有時候不行。

Parse.Cloud.beforeDelete(Parse.User, function(request, response) { 
    var query = new Parse.Query('ListSettings'); 
    query.find({ 
    success: function(results) { 

     for (var i = 0; i < results.length; i+=1) { 
     results[i].destroy(); 
     } 
     response.success(results); 
    }, 
    error: function() {results 
     response.error("error"); 
    } 
    }); 
}); 

請幫忙。

回答

0

在這裏,我們去,這對我有用。

Parse.Cloud.beforeDelete(Parse.User, function(request, response) { 
    var query = new Parse.Query('ListSettings'); 
    query.find().then(function(results) { 

     return Parse.Object.destroyAll(results); 
    }).then(function() { 
     response.success(); 

    }, function(error) { 
     response.error("Error removing ListSettings."); 

    }); 
}); 
0

而不是逐個刪除,您可以一次刪除所有對象,如果成功則返回成功。你可以通過下面的代碼塊來做到這一點;

query.find().then(function (results) 
    { 
     Parse.Object.destroyAll(results); 
     response.success("Success"); 
    }, 
    function (error) 
    { 
     response.success("Error"); 
    }) 

希望這會有所幫助。

+0

我試過類似的東西,現在嘗試過,用戶使用Swift刪除,而beforeDelete是「成功」。但是沒有任何東西從ListSettings中刪除。用戶有一個指向ListSettings的指針,這是我需要考慮使用Cloud Code的原因嗎? Thx尋求幫助。 – hugocarlmartin

+0

我更新了問題。 – hugocarlmartin