首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防火墙云功能.更新节点

防火墙云功能.更新节点
EN

Stack Overflow用户
提问于 2018-01-16 16:36:29
回答 1查看 1.1K关注 0票数 2

我在我的应用程序中使用Firebase云功能来计算用户的数量。我有一个喜欢的节点,当用户喜欢视频时,它会保存他的ID和一个布尔参数(true)。

这里的示例

在Firebase云函数上,我听那个节点,当新的like添加时,它会计算喜欢。正如你所看到的“喜欢:3”。

云函数代码-更新计数器

代码语言:javascript
复制
   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.');
   });
 });

该方法侦听“喜欢”节点,当一个子节点添加它时,触发该方法并更新“like:..”。在每个videoID上。

我要做的是首先更新其他节点中的计数器。

在该节点上,我还想更新计数器。

我的问题是,我不知道如何获得对该节点的引用。在"HipHop“节点上,保存视频,每个视频保存在他的ID下。

如何从云函数引用到该节点并更新“喜欢”?

编辑还可以从正在侦听的节点中检索数据。

例如,我监听“喜欢”节点,我想要检索该节点中刚刚更新的数据。

EN

回答 1

Stack Overflow用户

发布于 2018-01-17 14:12:03

你可以这样写:

代码语言:javascript
复制
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]);
  }
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48285899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档