如何知道 Parse Cloud Code afterSave 挂钩中的值是否发生变化?
How to know if value changed in Parse Cloud Code afterSave hook?
每当我的对象的单个键的值在解析云代码 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
尚未完成发送所有推送,通道对象就不会保留在数据库中。
您可以使用 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 的文档说明: "If set, the object, as currently stored." 不过,我不确定在什么情况下会设置它。在我的用例中,它按照上面的代码片段中提供的方式工作。
每当我的对象的单个键的值在解析云代码 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
尚未完成发送所有推送,通道对象就不会保留在数据库中。
您可以使用 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 的文档说明: "If set, the object, as currently stored." 不过,我不确定在什么情况下会设置它。在我的用例中,它按照上面的代码片段中提供的方式工作。