我的firebase-database结构如下:


而我在node.js中的功能代码:

exports.addFunction = functions.database
    .ref('/Users/{uid}/GyroScope X-axis')
    .onWrite(event => {

var add = 0;
const addGyroX = admin.database().ref('/GyroXaddition');
const userRef = event.data.adminRef;

userRef.once('value').then(snapshot => {
  snapshot.forEach(childrensnap => {
      var reading = childrensnap.key;
      var childData = reading.val();
      add = add+childData;
      return addGyroX.set(childData);
    });
  });
});


我的计划是遍历GyroScope X轴的值,并在迭代时将其值更新到新创建的路径(GyroXaddition)。我没有收到任何错误,但也没有更新。

最佳答案

您提供的代码绝对无法使用,并且可能会引发很多错误。我注意到了以下几点:


您没有退还诺言,这会给您带来麻烦。
您的forEach位置不正确,需要在函数体内调用。
您的set引用了来自其他范围的数据(同样,如果您要遍历多个值,则.set只会使用最后一个值)。
event.data.adminRef是正确的大写字母。
snapshot.key不是snapshot.key()


该代码片段解决了一些问题,但是我不确定您要如何使您一路走好。

return userRef.once('value').then(snap => {
  var sets = [];

  snap.forEach(childsnapshot => {
    var reading = childsnapshot.key;
    var childData = reading.val();
  });
});

关于node.js - 代码没有更新,以及如何知道迭代是否正在发生?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44853141/

10-16 20:48