【发布时间】:2015-11-02 09:22:09
【问题描述】:
我需要在保存之前检查原始对象以查看更改了哪些值。目前我有这个:
Parse.Cloud.beforeSave("Stats", function(request, response) {
if (!request.object.isNew()){
var query = new Parse.Query("Stats");
query.get(request.object.id, {
success: function(oldObject) {
alert('OLD:' + oldObject.get("Score") + "new:" + request.object.get("Score"));
/*Do My Stuff Here*/
response.success();
},
error: function(oldObject, error) {
response.error(error.message);
}
});
}else{
response.success();
}
});
问题是oldObject 等于request.object。
警报结果也是这样的:OLD:10 new:10,但真正的旧分数是5。另外根据之前保存的输入日志原来真的是5。
知道我做错了什么吗?
编辑: 这是保存前的日志。
before_save triggered for Stats as master:
Input: {"original":{"achievements":[],"Score":"100"updatedAt":"2015-11-02T10:09:24.170Z"},"update":{"Score":"110"}}
Result: Update changed to {"Score":"110"}
编辑2: 有没有办法获取脏值?
console.log("dirty: "+ request.object.dirty("score"));
I2015-11-03T14:23:12.198Z]dirty: true
【问题讨论】:
-
您是否检查过您的 Score 字段是否像
request.object.dirty("Score")一样脏? -
request.object.dirtyKeys和request.object.dirty("Score")都返回undefined -
一定有问题,因为如果您正在更新字段,您应该看到它们被标记为脏。顺便说一句,Javascript
alert函数如何在 Cloud 上工作?? -
@MoNazemi this 是
alert的样子 -
如果没有脏字段,您的请求不会更新任何内容,您能否展示一下您的更新请求是什么样的以及您是如何进行的?
标签: parse-platform parse-cloud-code parse-javascript-sdk