Как узнать, изменилось ли значение в 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, что: "Если установлено, объект, как хранится в данный момент". Я не уверен, в каких случаях это будет установлено, хотя. В моих случаях использования он работает, как указано в фрагменте кода выше.

Другие вопросы по тегам