Javascript 如何知道保存钩子后解析云代码中的值是否发生了更改?

Javascript 如何知道保存钩子后解析云代码中的值是否发生了更改?,javascript,parse-server,parse-cloud-code,before-save,after-save,Javascript,Parse Server,Parse Cloud Code,Before Save,After Save,每当解析云代码afterSavehook中我的对象的单个键的值发生变化时,我想发送推送通知 Parse.Cloud.afterSave("Channel", function(request) { var channel = request.object // TODO: check if value of channel key "state" was changed }); 如何检查键状态的值是否已更新 这是我可以从请求对象获得的所有数据: 此线程中建议的解决方案感觉不

每当解析云代码
afterSave
hook中我的对象的单个键的值发生变化时,我想发送推送通知

Parse.Cloud.afterSave("Channel", function(request) {  
    var channel = request.object
    // TODO: check if value of channel key "state" was changed
});
如何检查键
状态
的值是否已更新

这是我可以从
请求
对象获得的所有数据:

此线程中建议的解决方案感觉不正确:


我知道我可以通过
beforeSave
hook中的dirty方法来实现这一点。然而,这对我不起作用。为什么?如果我向许多用户发送推送通知,这需要一些时间。接收推送通知的客户端开始从服务器请求更新的通道对象。但是,他们可能会收到旧版本的对象,因为只要
beforeSave
尚未完成发送所有推送操作,通道对象就不会持久保存在数据库中。

您可以使用
request.original
。例如:

Parse.Cloud.afterSave("Channel", function(request) {  
    var channel = request.object;
    var channel_orig = request.original;

    if (channel.get("status") != channel_orig.get("status")) {
        // Send push notification.
    }
});
文档中说明了request.original:“如果设置了,则对象是当前存储的。”不过,我不确定在什么情况下会设置它。在我的用例中,它的工作方式与上面的代码片段中提供的相同