使用云功能在Firebase中循环和添加数据

时间:2017-04-20 20:02:57

标签: javascript node.js firebase firebase-realtime-database google-cloud-functions

我是一个快速的iOS程序员,我对firebase函数和node.js的语言都很陌生。我有一个firebase数据库结构,在一个“Gym”中显示不同用户的练习详细信息。每个用户的练习都有行进的距离,以分钟为单位的时间和步伐(以秒和分钟为单位)。请参阅json代码表示俱乐部。

 {
  "Gym" : {
    "-KhnVNdA50oR04q073k5" : {
      "distance" : 0.01,
      "minutes" : 6,
      "pace" : 7.5,
      "seconds" : 40
    },
    "-KhqiOc0CGdFMXihGB2N" : {
      "distance" : 3.54,
      "minutes" : 5,
      "pace" : 5.89,
      "seconds" : 23
    },
    "-KhrfOsis4m51qM9kbl2" : {
      "distance" : 3.90,
      "minutes" : 2,
      "pace" : 6.77,
      "seconds" : 38
    },
    "-Ki7NswN2bQb0n1OIuyr" : {
      "distance" : 4.53,
      "minutes" : 10,
      "pace" : 6.10,
      "seconds" : 29
    }
  }
}

我想编写一个firebase函数(在node.js中)来循环遍历数据并将所有秒加在onWrite上。从教程我知道如何将信息记录到控制台等等。但我不知道如何循环数据 - 这在Swift中非常容易。

这是我的出发点

exports.totalClubSeconds = function.database.ref('/ClubRuns/{RunID}').onWrite(event => {

    const runID = event.params.RunID


});

非常感谢您提前获得帮助。道歉让这个功能变得空洞。 Node.js有一点学习曲线,学习时间有点紧张。 :(

2 个答案:

答案 0 :(得分:2)

event.data.forEach会让您循环播放快照。 Docs

答案 1 :(得分:2)

试试这个:

   const runID = event.params.RunID
   let RunRef = admin.database().ref(`Gym/${RunID}`);
   return RunRef.once('value').then(snapshot => {
      if (snapshot.hasChildren()) {
        const minutes= 0;
        snapshot.forEach(function(child) {
          //do the sum here
        });
        //return Promise here;
      }
    });