[英]Firebase cloud functions - Update nodes
我在應用程序中使用Firebase雲功能來計算用戶的喜歡數。 我有一個喜歡的節點,當用戶喜歡視頻時,它會保存他的ID和一個布爾參數(true)。
這里的例子
在Firebase雲功能上,我收聽該節點,當添加新的贊時,它會點贊。 如您所見“ likes:3”。
雲功能代碼-更新計數器
exports.countlikechange = functions.database.ref('/likes/{postid}/{userUID}').onWrite(event => {
const collectionRef = event.data.ref.parent;
console.log(collectionRef);
const countRef = collectionRef.child('likes');
// Return the promise from countRef.transaction() so our function
// waits for this async event to complete before it exits.
return countRef.transaction(current => {
if (event.data.exists() && !event.data.previous.exists()) {
return (current || 0) + 1;
}
else if (!event.data.exists() && event.data.previous.exists()) {
return (current || 0) - 1;
}
}).then(() => {
console.log('Counter updated.');
});
});
該方法偵聽“喜歡”節點,當添加一個孩子時,它將觸發該方法並更新每個videoID上的“喜歡:..”。
我想做的是首先我想更新其他節點中的計數器
在該節點上,我也想更新計數器。
我的問題是我不知道如何獲取對該節點的引用。 在“ HipHop”節點上,將保存視頻,每個視頻都保存在其ID下。
我如何從雲功能引用該節點並更新“點贊”?
編輯也如何從正在偵聽的節點中檢索數據。
例如,我正在聽“喜歡”節點,我想檢索剛在該節點中更新的數據。
您可以這樣寫:
exports.countlikechange = functions.database.ref('/likes/{postid}/{userUID}').onWrite(event => {
const collectionRef = event.data.ref.parent;
const countRef = collectionRef.child('likes');
const promises = [];
if (event.data.exists() && !event.data.previous.exists()) {
const promisseadd1 = countRef.transaction(current => {
return (current || 0) + 1;
});
const promisseadd2 = admin.database().ref(`/enter/here/new/path/likes`).transaction(current => {
return (current || 0) + 1;
});
return Promise.all([promisseadd1, promisseadd2]);
} else if (!event.data.exists() && event.data.previous.exists()) {
const promissesubs1 = countRef.transaction(current => {
return (current || 0) - 1;
});
const promissesubs2 = admin.database().ref(`/enter/here/new/path/likes`).transaction(current => {
return (current || 0) - 1;
});
return Promise.all([promissesubs1, promissesubs2]);
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.