Как узнать, изменилось ли значение в Parse Cloud Code afterSave hook?
Я хочу отправлять push-уведомления каждый раз, когда значение одного ключа моего объекта изменяется в коде разбора облака 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
Решение, предложенное в этой теме, кажется неправильным: Parse Javascript API Cloud Code afterSave с доступом к значениям beforeSave
Я знаю, что могу сделать это с помощью грязного метода в beforeSave
крюк. Однако это не работает для меня. Зачем? Если я отправлю push-уведомления многим пользователям, это займет некоторое время. Клиенты, получающие push-уведомления, начинают запрашивать обновленный объект канала с сервера. Однако они могут получить старую версию объекта, потому что до beforeSave
не завершил отправку всех нажатий, объект канала не сохранен в базе данных.
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, что: "Если установлено, объект, как хранится в данный момент". Я не уверен, в каких случаях это будет установлено, хотя. В моих случаях использования он работает, как указано в фрагменте кода выше.