2017-12-30 23 views
1

私のオブジェクトの単一のキーの値がパーズクラウドコードafterSaveフックで変わるたびにプッシュ通知を送信したいと思います。Parse Cloudコード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がすべてのプッシュの送信を完了していない限り、チャネルオブジェクトはデータベースに保持されないため、古いバージョンのオブジェクトを受け取る可能性があります。

答えて

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について、「設定されている場合は、現在格納されているオブジェクト」と記載されています。私はそれがどのような場合に設定されるのか分からない。私の使用例では、上記のコードスニペットで提供されているように動作します。

+0

これは完全に機能します。ありがとうございました! – funkenstrahlen

関連する問題