Мне нужно проверить исходный объект перед сохранением, чтобы узнать, какое значение изменилось. В настоящее время у меня есть это:PARSE проверить исходный объект на BeforeSave
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"}
Edit2: Есть ли способ, чтобы получить грязную ценность?
console.log("dirty: "+ request.object.dirty("score"));
I2015-11-03T14:23:12.198Z]dirty: true
Вы проверили, не загрязнено ли ваше поле «Оценка», например 'request.object.dirty (« Score »)'? –
И 'request.object.dirtyKeys', и' request.object.dirty ("Score") 'return' undefined' – rob180
Что-то должно быть неправильно, потому что если вы обновляете поля, вы должны увидеть их помеченными как грязные. Кстати, как работает функция Javascript 'alert' на Cloud? –