3

は、次のようなデータ構造を取ることができます:古い値と新しい値をFirewareのCloud機能と.onWriteまたはonchangeで比較するには?

Datastructure

今、私はFirebase機能付きaccessTokenFacebookをリフレッシュしたいです。 私は2つのオプションをテストした:

onWrite
  1. 、および:私にonChanged

onWriteが最もよく似合う

  • が、次の機能を持つ:

    exports.getFacebookAccessTokenOnchange = functions.database.ref('/users/{uid}/userAccountInfo/lastLogin').onWrite(event => { 
        const lastLogin = event.data; 
        let dateObject = new Date(); 
        let currentDate = dateObject.toUTCString(); 
    
        return lastLogin.ref.parent.parent.child('services').child('facebook').update({'accessTokenFacebook': currentDate}); 
    
    }); 
    

    何かが起こりました、解決できません:userUIDレコード全体(クリーンアップ用)を削除すると、userUIDレコードが自動的に作成されます。/uid/services/facebood/accesTokenFacebook ...

    また、削除によってonWriteがトリガーされるようです。

    私も.onchangeを試しましたが、accessTokenFacebookがまだ存在しないときだけトリガーします。変更によってこの変更が行われたとき、変更は再びトリガされませんでした。

    次に、私がしたいことは、古い値と新しい値との比較です。例がありますか?または、より良い解決策がありますか?

  • +7

    'functions.database.ref(...)onWrite(E =>はconsole.log( –

    +0

    @Michael、速い応答:)それは簡単に見えます、私はできるだけ早くこれを試してみます。 – BushJopie

    +0

    @Michael、Thx!私はうまく動作します。 – BushJopie

    答えて

    8

    これはコメントにのみあるので、これは受け入れられた答えがあると私はほとんど逃しました。 @Michael Bleighへのすべての信用。 。場合誰もこの質問につまずくと、ほぼあまりにもそれを逃し、次のように答えはで

    exports.yourFunctionName = functions.database.ref('/somePath/anotherPath/{someVariablePath}/deeper/path').onWrite(event => { 
    
        const oldValue = event.data.previous.val(); 
        const newValue = event.data.val() 
    
    }); 
    
    関連する問題