【问题标题】:Parse Cloud Code: Delete All Objects After Query解析云代码:查询后删除所有对象
【发布时间】:2014-08-08 20:00:17
【问题描述】:

场景

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

//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?

【问题讨论】:

    标签: javascript parse-platform parse-framework


    【解决方案1】:

    你可以使用

    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() 例程

    【讨论】:

      【解决方案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);
          });
      });
      

      【讨论】:

      • 这是正确的,但效率不高,因为它消耗了大量的请求。 Parse.Object.destroyAll(users);是更好的解决方案
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多