2015-07-13 125 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