作者:求学者 | 来源:互联网 | 2023-02-06 17:30
让我们采取以下数据结构:
现在我想用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});
});
有事我don'understand /可以解决:当我删除整个userUID记录(用于清理),该userUID记录自动创建,那么只能用以下路径{} UID /服务/ facebood/accesTokenFacebook ...
似乎删除也会触发onWrite.
我也尝试过.onchange,但只有当仍然没有accessTokenFacebook时才触发.当更改成为这个时,更改永远不会再次触发.
所以接下来我要做的是比较旧值和新值.你有一个例子吗?或者有更好的解决方案吗?
1> Rbar..:
UPDATE:
云功能最近推出的更改API的说明这里.
现在(> = v1.0.0)
exports.dbWrite = functions.database.ref('/path').onWrite((change, context) => {
const beforeData = change.before.val(); // data before the write
const afterData = change.after.val(); // data after the write
});
之前(<= v0.9.1)
exports.dbWrite = functions.database.ref('/path').onWrite((event) => {
const beforeData = event.data.previous.val(); // data before the write
const afterData = event.data.val(); // data after the write
});