【问题标题】:Delete specific object from Parse.com从 Parse.com 删除特定对象
【发布时间】:2014-10-06 01:23:22
【问题描述】:

在我的云代码中,我想检索“消息”类中的第一个对象。然后我想从该对象中获取一些信息,将其发送到另一个类,最后从我最初从中提取它的“消息”类中删除该对象。下面是我的代码,但是它不起作用。我应该如何重做这个?

我是否应该使用与“销毁”方法不同的方法,例如 collection.remove?

Parse.Cloud.afterSave("sendMessage", function(Parse.Message, response) {
  var body = null;
  var senderName = null;
  var senderId = null;
  var randUsers = [];

  var query = new.Parse.Query(Parse.Message);
  query.find({
    success: function(results){
      body.push(results[1].get("messageBody"));
      senderName.push(results[1].get("senderName"));
      senderId.push(results[1].get("senderId"));
      results[1].destroy({
        success: function(results[1]){
          //the first object in the class "Messages" was deleted
        }, error: function(results[1], error){
          //the first object was not deleted
        }
      });
      response.success(getUsers);
    }, error: funtion(error){
      response.error("Error");
    }

  });
});

为避免混淆:“getUsers”是任意函数调用。

【问题讨论】:

    标签: javascript parse-platform parse-cloud-code


    【解决方案1】:

    与条目重复的问题;

    Query entire class vs first object in the class

    但是,如果要删除特定对象,则需要唯一标识该对象的东西 目的。然后,一种方法是使用 Parse 对象 id 从类中删除对象。

    要通过云端删除对象,需要使用 ParseObject 的 destroy 方法。但是如果你有多个对象,那么你可以使用 destroyAll 方法。下面是 javascript API 上 ParseObject 删除方法的一个示例;

    var yourClass = Parse.Object.extend("YourClass");
    var query = new Parse.Query(yourClass);
    query.get("yourObjectId", {
      success: function(yourObj) {
        // The object was retrieved successfully.
        yourObj.destroy({});
      },
      error: function(object, error) {
        // The object was not retrieved successfully.
        // error is a Parse.Error with an error code and description.
      }
    }); 
    

    希望这会有所帮助, 问候。

    【讨论】:

    • 是的,但如果我确实使用了 objectId,我如何在 javascript 代码中从解析云中删除它?
    • 尊敬的 user2792129,我根据您的评论更新了答案。希望这可以帮助。问候。
    【解决方案2】:

    上面的一些变化:

    var missingDataQuery = new Parse.Query(missingDataObj)
                missingDataQuery.equalTo('projectId',project);
    
                var getMissingData = missingDataQuery.find({
                      success: function(yourObj) {
                        console.log('here')
                        yourObj[0].destroy({})
                      },
                      error: function(object, error) {
    
                      }
                });
    

    这里我们获取对象然后销毁它。

    【讨论】:

      【解决方案3】:
      func deleteImage(imageId: String) {
      
          let query = PFQuery(className: "ClassName")
          query.whereKey("imageId", equalTo: "\(imageId)")
      
          query.findObjectsInBackground {
              (objects:[PFObject]?, error: Error?) -> Void in
      
              if error == nil && (objects != nil) {
                  for object in objects! {
                      object.deleteInBackground()
                      print("object deleted")
                  }
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-04-14
        • 2017-06-22
        • 1970-01-01
        • 2011-08-20
        • 2021-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多