尝试使用Parse Cloud Code销毁数据条目时出现问题

时间:2015-01-04 17:50:47

标签: parse-platform

我有以下beforeSave函数,如果有相同的fbEventId,则应该删除一个条目。如果查询没有找到任何条目,它也应该返回成功(要保存的新数据)。

Parse.Cloud.beforeSave("FbEvent", function(request, response) { 
  var query = new Parse.Query("FbEvent");
  query.equalTo("fbEventId", request.object.get("fbEventId"));
  query.find({
    success: function(results){
      if (results.length>0){
          var toRemove = results[0];
          console.log(toRemove);
          toRemove.destroy({
            success: function(toRemove){
              response.success();
            }, error: function(toRemove, error){
              response.error("Failed when destroying existing entry.");
            }
          });
      } else {
      response.error();}
    }, error: function(error){
      response.error("Error");
    }
  });
});

这将返回以下日志:

 I2015-01-04T17:46:43.884Z] v158: before_save triggered for FbEvent
  Input: {"original":null,"update":{"locationFbId":"locationId","startDate":"2014-12-25T00:30:00-0200","fbEventId":"1590722614482003","fbEventName":"O Beco Invade a Cidade Baixa! | Open Bar de Natal"}}
  Result: Validation failed

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

所以这个结果是因为

response.error() 
正在调用

而没有参数。您的问题是,当您真的要调用response.success()时,您正在调用response.error()。见下文:

Parse.Cloud.beforeSave("FbEvent", function(request, response) { 
  var query = new Parse.Query("FbEvent");
  query.equalTo("fbEventId", request.object.get("fbEventId"));
  query.find({
    success: function(results){
      if (results.length>0){
          // This block here will remove only the first conflicting entry, if you want to simply not save this entry, then user response.error("Entry with this id exists, canceling save");
          var toRemove = results[0];
          console.log(toRemove);
          toRemove.destroy({
            success: function(toRemove){
              response.success();
            }, error: function(toRemove, error){
              response.error("Failed when destroying existing entry.");
            }
          });
      } else {
      // There are 0 elements in the resulting array, so we do want to save, meaning we should return success
      response.success();}
    }, error: function(error){
      response.error("Error");
    }
  });
});