node.js - 通过迭代子 Node 添加值

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

My firebase-database structure click here

我在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(add); 
});

我的计划是迭代其下的 GyroScope X 轴值并添加值,例如在第一次迭代(图中的 0.004...555)和第二次迭代(0.002...645)中,添加这些值并将结果更新到不同的路径(如果存在)或创建路径并设置结果。我没有收到任何错误,但它也没有更新,它更新 0 而不是附加值。哪部分代码是错误的?

最佳答案

据我所知,您正在设置 0每次。加载数据后您也不会返回 promise ,这意味着您的函数可能会在最终 }); 之后随时中止.

这是一个更好的变体:

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;  

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

关于node.js - 通过迭代子 Node 添加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44855687/

相关文章:

android - 自定义 Firebase-ui 身份验证 Android

android - 无法将 POJO 写入 Firebase 数据库

android - 如何从firebase数据库中的嵌套节点检索所有数据

node.js - 强制要求检查模块的当前目录

node.js - 为什么将app.get()放在express.js中的正确位置很重要?

javascript - Webpack 错误 - 来自 UglifyJs 的 bundle.js 中的错误 意外的标记 : name (urlParts)

ios - Swift Firebase - 上下文类型 'AnyObject' 不能与字典文字一起使用

python - 您的语言在实践中对 unicode 的支持程度如何?

firebase - Google Firestore 是 Google Cloud Datastore 的子集还是超集?

firebase - 如何只允许 “owns”数据的用户编辑呢?火力基地