簡體   English   中英

Firebase雲功能-更新節點

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM