编程语言
首页 > 编程语言> > javascript-如何知道afterSave挂钩后解析云代码中的值是否更改?

javascript-如何知道afterSave挂钩后解析云代码中的值是否更改?

作者:互联网

我想在SaveSave挂钩之后每次解析云代码中对象的单个键的值更改时都发送推送通知.

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

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

这是我可以从请求对象中获取的所有数据: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还没有完成所有推送,通道对象就不会保留在数据库中.

解决方法:

您可以使用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的信息:“如果设置,则为当前存储的对象”.我不确定在什么情况下会设置.在我的用例中,它的工作原理如上面的代码片段所示.

标签:before-save,parse-server,cloud-code,after-save,javascript
来源: https://codeday.me/bug/20191110/2013976.html