gpt4 book ai didi

javascript - 解析 Javascript API Cloud 代码 afterSave 并访问 beforeSave 值

转载 作者:行者123 更新时间:2023-11-28 07:21:56 31 4
gpt4 key购买 nike

我正在使用 Parse Cloud Code 进行保存前/保存后处理。我会检查 afterSave Hook 中属性的 beforeSave 值 - 例如,当 parseObj.get('status')processing => Complete 转换时执行某些操作。我可以访问 oldVal/newVal 以获取 beforeSave 处理程序中更改的属性,但我找不到传递 oldVal 的方法到 afterSave 处理程序,而不保存为数据库字段。

我尝试将这些值作为属性传递给 responseresponse.object 对象,但都没有传递到 afterSave

Parse.Cloud.beforeSave('ParseObj', function(request, response) {
var checkDirty, isDirty, parseObj, prevQ;
// request keys=["object","installationId","user","master"]
if (request.object.isNew()) {
return response.success();
} else {
parseObj = request.object;
checkDirty = ['status']; // array of all attrs to check
isDirty = [];
_.each(checkDirty, function(attr) {
if (parseObj.dirty(attr)) {
isDirty.push(attr);
}
});
console.log("isDirty=" + JSON.stringify(isDirty));
if (isDirty.length) {
prevQ = new Parse.Query('ParseObj');
return prevQ.get(parseObj.id).then(function(prevParseObj) {
var newVal, oldVal;
console.log("prevParseObj, id=" + prevParseObj.id);
oldVal = _.pick(prevParseObj.toJSON(), isDirty);
_beforeSave(parseObj, oldVal); // do something here
request.previousValues = oldVal
request.object.previousValues = oldVal
return response.success();
}, function(err) {
return response.error("parsObj NOT FOUND, parseObj.id=" + parseObj.id);
});
} else {
return response.success();
}
}
});

Parse.Cloud.afterSave('ParseObj', function(request) {
var parseObj;
// request keys=["object","installationId","user","master"],
oldVal = request.previousValues // undefined
oldVal = request.object.previousValues // also, undefined
parseObj = request.object;
_afterSave(parseObj, oldVal) // do something else here
return;
});

有什么想法吗?

最佳答案

我对此进行了更多研究,最终暂时保存到 Parse 对象,然后将其删除,如下所示:

//Add the value you need to the object prior to saving using an "oldValue" key
yourPFObject["oldValue"] = value (this is in your SDK somewhere where the save happens)

//Get that value in afterSave in Cloud Code
var old = object.get("oldValue")

//Do whatever you need to do with "old"...

//Remove the temporary old value so it doesn't stay in the database
object.unset("oldValue")
object.save()

我希望这会有所帮助。祝你好运!

关于javascript - 解析 Javascript API Cloud 代码 afterSave 并访问 beforeSave 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30207102/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com