【问题标题】:How to know if value changed in Parse Cloud Code afterSave hook?如何知道 Parse Cloud Code afterSave 挂钩中的值是否发生了变化?
【发布时间】:2018-06-10 15:12:46
【问题描述】:

我想每次在解析云代码afterSave钩子中我的对象的单个键的值发生变化时发送推送通知。

Parse.Cloud.afterSave("Channel", function(request) {  
    var channel = request.object
    // TODO: check if value of channel key "state" was changed
});

如何检查键 state 的值是否已更新?

这是我可以从request 对象获得的所有数据:http://parseplatform.org/Parse-SDK-JS/api/v1.11.0/Parse.Cloud.html#.TriggerRequest

这个帖子里建议的解决方法感觉不对:Parse Javascript API Cloud Code afterSave with access to beforeSave values

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

【问题讨论】:

    标签: javascript parse-server parse-cloud-code before-save after-save


    【解决方案1】:

    您可以使用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 的文档说明:“如果设置,则为当前存储的对象。”不过,我不确定在什么情况下会设置它。在我的用例中,它按照上面的代码 sn-p 中提供的方式工作。

    【讨论】:

      猜你喜欢
      • 2011-02-01
      • 1970-01-01
      • 2021-12-09
      • 2011-03-19
      • 2019-09-14
      • 1970-01-01
      • 2017-11-03
      • 2021-11-02
      • 2021-04-12
      相关资源
      最近更新 更多