解析json响应给出未定义

时间:2018-08-10 15:54:41

标签: json firebase firebase-realtime-database angularfire2

我正在使用angularfire2从实时数据库中获取数据。响应如下所示

    {"type":"value",
     "payload":{
                   "-LJXFAd_q3Cin64EBc7H":
                     {"_date":"9-8-2018",
                      "_deliveryType":"Pick up",
                      "_estDeliveryTime":"2018-08-10T11:43:57.164Z",
                       "_location":""}
}}

这样做

有效载荷内的元素是使用push创建的键。我不知道该如何引用,因此如何获取“ LJXFAd_q3Cin64EBc7H”下的数据?

有效载荷中有很多这样的条目,我需要全部获取。

上面得到的代码是:

getOrderHistory(uid:string){
    console.log('start of getOrderHistory with uid:' + uid)
    return new Promise((resolve, reject) =>
      {
        this.db.object("/users/" + uid + "/orders").snapshotChanges().subscribe(
          res => {
            //console.log('response:' + res)
            resolve(res)
          },
          err => {
            console.log(err)
            reject(err)
          }
        )
      })
  }

2 个答案:

答案 0 :(得分:1)

尝试一下,它将每个快照映射到一个拥有其键和值的对象。

Highscore.txt

答案 1 :(得分:0)

通常,实时数据库发送快照,您可以在其中执行snapshot.id以获取id和.data(或我目前忘记的.data())以获取有效负载。

JSON.parse,然后对其进行迭代或使用点符号或方括号符号对其进行处理。要获得财产:

obj[payload][LJXFAd_q3Cin64EBc7H]

要迭代:

function eachRecursive(obj)
{
    for (var k in obj)
    {
        if (typeof obj[k] == "object" && obj[k] !== null)
            eachRecursive(obj[k]);
        else
            // do something... 
    }
}