【问题标题】:looping through firebase data循环通过firebase数据
【发布时间】:2020-02-26 06:49:22
【问题描述】:

您好,我正在尝试使用云功能访问 firebase 实时数据库中的嵌套数据,我的数据如下所示:

{
  "RANGE1": {
    "left": 2,
    "overlayImage": "",
    "right": 1,
    "submittedInfo": {
      "left_1": {
        "TimeStamp": "2020-02-16 19:05:35",
        "horozontalAccuracy": 10,
        "latitude": 0000,
        "longitude": 0000
      },
      "left_2": {
        "TimeStamp": "2020-02-16 19:23:59",
        "horozontalAccuracy": 10,
        "latitude": 0000,
        "longitude": 0000
      },
      "left_3": {
        "TimeStamp": "2020-02-20 19:35:28",
        "horozontalAccuracy": 10,
        "latitude": 0000,
        "longitude": 0000
      },
      "right_1": {
        "TimeStamp": "2020-02-16 19:08:30",
        "horozontalAccuracy": 10,
        "latitude": 0000,
        "longitude": 0000
      }
    }
  },
  "RANGE2": {
    "left": 1,
    "overlayImage": "",
    "right": 1,
    "submittedInfo": {
      "left_1": {
        "TimeStamp": "2020-02-12 22:07:11",
        "horozontalAccuracy": 5,
        "latitude": 0000,
        "longitude": 0000
      },

      "right_1": {
        "TimeStamp": "2020-02-12 22:36:36",
        "horozontalAccuracy": 11.721012922544011,
        "latitude": 0000,
        "longitude": 0000
      }
    }
  }
}

而且我有一个应该过滤和展平这些数据的函数。但我似乎无法弄清楚如何深入节点。我尝试的一切似乎都卡在访问 [object Object] 或 typeof() 仍然应该是 JSON 对象时返回一个字符串

 admin.database().ref(".../range").once('value').then((snapshot) => {
    var flagInfo = [];
    snapshot.forEach((range) => {
        console.log("range is : " + range) // [object Object]
        console.log("range[submitted] " + range['submittedInfo']) // undefined???
        // what I need to do is something like: 
        range["submittedInfo"].forEach((flagData) => { 
            console.log(flagData.key)
            console.log(flagData["latitude"]) // and so on for the rest of the keys
        }) // end 
})

【问题讨论】:

  • 你能添加接受的输出吗
  • 类型错误,“无法读取未定义的属性 'forEach'”。错误发生在范围["submittedInfo"].foreach((flagData) ...

标签: javascript firebase-realtime-database google-cloud-functions


【解决方案1】:

请看this reference. forEach 部分有很好的例子。

您应该使用方法child() 和val()。目前我手头没有测试游乐场,但它应该类似于range.val() 来获取范围和range.child('submittedInfo').val() 来获取“提交信息”数据,但你必须弄清楚如何准确地做到这一点。如果您无法管理,请告诉我,我会尝试在我这边实施。

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-28
    • 2020-05-01
    • 2019-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多