Javascript 如何在google realtime数据库中定位一个深度嵌套的对象?

Javascript 如何在google realtime数据库中定位一个深度嵌套的对象?,javascript,firebase-realtime-database,google-cloud-platform,google-cloud-functions,Javascript,Firebase Realtime Database,Google Cloud Platform,Google Cloud Functions,我想做一个cron作业,删除实时数据库中超过24小时的深度嵌套对象 我已经遍历并到达了深度嵌套的对象,但我无法获取/确定对象中“addedTime”的值。如何获取该值以便在父级上运行.remove?到目前为止,它返回为未定义或抛出错误 .schedule("every 1 hours") .onRun(context => { const rootDatabaseRef = admin.database().ref("ghostData/"); return roo

我想做一个cron作业,删除实时数据库中超过24小时的深度嵌套对象

我已经遍历并到达了深度嵌套的对象,但我无法获取/确定对象中“addedTime”的值。如何获取该值以便在父级上运行
.remove
?到目前为止,它返回为未定义或抛出错误

  .schedule("every 1 hours")
  .onRun(context => {
    const rootDatabaseRef = admin.database().ref("ghostData/");
    return rootDatabaseRef.ref.once("value").then(function(snapshot) {
      console.log("snap", snapshot.val());
      snapshot.forEach(function(userSnapshot) {
        let buckets = userSnapshot.val().buckets;
        console.log("buckets", buckets);
        buckets.forEach(function(bucket) {
          let currentTimeYesterday = new Date(
            new Date().getTime() - 24 * 60 * 60 * 1000
          ).getTime();
          let addedTime = bucket.val().addedTime;
          console.log("curr time", currentTimeYesterday);
          console.log("addedTime", addedTime);
        });
      });
以下是我的实时数据库中的数据以及来自无服务器云功能的日志:


我认为您在循环方面遇到了问题,因为当您执行此操作时,“bucket.forEach(function(bucket)”-->bucket是列表中的第一个元素, 每个元素都有一个嵌套字典,所以首先你必须迭代字典,对于字典中的每个键,你会得到另一个字典,你必须抓取 只有增加的时间值

我知道这很难理解,但我认为这是因为你没有正确地循环

请尝试下面的代码或类似的代码

buckets.forEach(function(bucket){
   let currentTimeYesterday = new ......
   bucket.forEach(function(dict){
       Object.keys(dict).forEach(k => {
           console.log(k, ':', dict[k].addedTime);
           let addedTime = dict[k].addedTime;

       });
    ....
   }
  ....
}

看起来你的帖子缺少了一些东西。嘿,道格,你能详细说明一下吗?第一个目标是针对“addedTime”,我不能。你添加的链接没有显示出来。注意,它是(到目前为止)最好将所有信息都放在问题本身内部,而不是外部服务的链接中。这是有意义的。我已将所有信息添加到问题中。希望它能提供更多信息。