让我们采用以下数据结构:

现在,我想用Firebase函数刷新accessTokenFacebook。
我测试了两个选项:

  • onWrite,以及:
  • 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时才会触发。当做出更改时,更改就再也不会触发。

    因此,我接下来要做的是将旧值与新值进行比较。你有例子吗?还是有更好的解决方案?

    最佳答案

    现在不推荐使用这些功能,这是该主题的第一搜索结果,现在是Cloud Functions现在使用的新更新版本。

    exports.yourFunction = functions.database.ref('/path/{randomPath}/goes/here').onWrite((change, context) => {
        // Your value after the write
        const newVal = change.after.val();
        // Your value before the write
        const oldVal = change.before.val();
    });
    

    关于javascript - 如何通过.onWrite或onchange将Firebase的Cloud Functions中的旧值和新值进行比较?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43398553/

    10-11 17:09