Удалить конкретный объект с Parse.com

В моем облачном коде я хочу получить первый объект в классе "Сообщения". Затем я хочу получить некоторую информацию из этого объекта, отправить ее в другой класс и, наконец, удалить этот объект из класса "Сообщения", из которого я изначально извлек ее. Ниже мой код, однако он не работает. Как мне переделать это?

Должен ли я использовать другой подход, чем метод "уничтожить", такой как 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" - это произвольный вызов функции.

2 ответа

Решение

Дубликат вопроса с записью;

Запрос всего класса против первого объекта в классе

Однако, если вы хотите удалить конкретный объект, вам нужно что-то, что однозначно идентифицирует объект. Затем одним из способов является использование идентификатора объекта Parse для удаления объекта из класса.

Чтобы удалить объект через облако, вам нужно использовать метод destroy в ParseObject. Но если у вас есть несколько объектов, вы можете использовать метод destroyAll. Ниже приведен пример метода удаления ParseObject в API JavaScript.

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.
  }
}); 

Надеюсь, это поможет, С уважением.

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")
            }
        }
    }
}

Некоторые изменения в выше:

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) {

                  }
            });

Здесь мы получаем объект, а затем уничтожаем его.

Другие вопросы по тегам