我设置了解析云代码并且工作得很好。我正在寻找一种方法来运行aftersave云代码只有在某些属性被修改。有可能吗?
答案 0 :(得分:7)
我不确定您要完全做什么,但您可以使用dirty或dirtyKeys来检查您的属性是否已在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)
不,这是不可能的。在该功能上没有指定此类过滤器。您也无法区分功能规格中的首次保存/更新。您需要在函数内添加逻辑以确定它是否有任何工作要做。