仅对某些属性运行解析后启动云代码

时间:2015-04-11 13:38:22

标签: parse-platform

我设置了解析云代码并且工作得很好。我正在寻找一种方法来运行aftersave云代码只有在某些属性被修改。有可能吗?

3 个答案:

答案 0 :(得分:7)

我不确定您要完全做什么,但您可以使用dirtydirtyKeys来检查您的属性是否已在beforeSave中修改。

afterSave existed也可用于检查对象是刚创建还是已存在。

dirty的示例:

Parse.Cloud.beforeSave("Location", function(request, response) {
  var location = request.object;

  if (location.dirty("photo")) {
    // photo is modified
    // do something (like resizing the photo as thumbnail)
  } 

  response.success();
  return;
});

答案 1 :(得分:1)

我的方式:

创建一个"虚拟"列(未在您的应用中使用),名为:changedcolumns

在beforeSave中检查每个字段,如果它是脏的,则将更改的字段名称放入changedcolumns字段,如"名称,日期,性别"

Parse.Cloud.beforeSave(Parse.User, function(request, response) {
        var changedColumns=",";
        if (request.object.dirty("locale")) {
            changedColumns=changedColumns+"locale,"
        }
        ....other columns....

        request.object.set("changedColumns",changedColumns);

        ....

});

在afterSave中你有一个包含更改列名的列(你可以用indexOf函数检查它)

Parse.Cloud.afterSave(Parse.User, function(request) {
        var changedColumns=request.object.get("changedColumns");
        if (changedColumns==null) {
            changedColumns="";
        }
        if (changedColumns.indexOf(",locale,")>-1) {    //locale changed
            ... LOCALE CHANGED ...
            ... DO SOMETHING ...
        }
});

请将我的好答案投票赞成:)

答案 2 :(得分:0)

不,这是不可能的。在该功能上没有指定此类过滤器。您也无法区分功能规格中的首次保存/更新。您需要在函数内添加逻辑以确定它是否有任何工作要做。