让我们采用以下数据结构:
现在,我想用Firebase函数刷新accessTokenFacebook。
我测试了两个选项:
对我而言,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/