4

设想

我有一个允许用户创建帐户的应用程序,但也允许用户删除他们的帐户。删除他们的帐户后,我有一个云代码功能,它将删除用户所做的所有“帖子”。我正在使用的云代码是...

//Delete all User's posts
Parse.Cloud.define("deletePosts", function(request, response) {

    var userID = request.params.userID;

    var query = new Parse.Query(Parse.Post);
    query.equalTo("postedByID", userID);
    query.find().then(function (users) {

        //What do I do HERE to delete the posts?

        users.save().then(function(user) {
        response.success(user);
        }, function(error) {
        response.error(error)
        });

    }, function (error) {

         response.error(error);

    });

});

问题

一旦我对所有用户的帖子进行了查询,我该如何删除它们?(见//What do I do HERE?:)

4

2 回答 2

10

你可以使用

Parse.Object.destroyAll(users); // As per your code – what you call users here are actually posts

请参阅: http: //parseplatform.org/Parse-SDK-JS/api/classes/Parse.Object.html#methods_destroyAll

此外,请考虑在 Parse.User 上使用 Parse.Cloud.afterDelete (如果这就是“删除帐户”的意思)来进行诸如此类的清理。

哦,为了完整起见,你不需要在 destroyAll() 之后的 save() 例程

于 2014-08-09T06:10:02.290 回答
2

在您的“我在这里做什么......”评论下方在线更新:

笔记:

  1. 你不需要调用 save() 方法,所以我把它拿出来了。

  2. 当然,这只是个人喜好问题,但您可能希望选择一个比“用户”更有意义的参数名称,因为您实际上不是在查询用户,而是在查询帖子(恰好发生在与用户相关)。


Parse.Cloud.define("deletePosts", function(request, response) {
    var userID = request.params.userID;

    var query = new Parse.Query(Parse.Post);
    query.equalTo("postedByID", userID);
    query.find().then(function (users) {

        //What do I do HERE to delete the posts?
        users.forEach(function(user) {
            user.destroy({
                success: function() {
                    // SUCCESS CODE HERE, IF YOU WANT
                },
                error: function() {
                    // ERROR CODE HERE, IF YOU WANT
                }
            });
        });
    }, function (error) {
         response.error(error);
    });
});
于 2014-08-19T17:25:25.030 回答