【问题标题】:parsing JSON data returns undefined解析 JSON 数据返回 undefined
【发布时间】:2019-02-27 11:56:39
【问题描述】:
  {
   "EWsd5eHpriTDfhNTJux8IByrkUD2":{
      "appointmentDetail":"",
      "appointmentPrescription":"",
      "email":"ronaldoraj57@gmail.com",
      "firstName":"Raja",
      "gender":"Male",
      "hospitalInformation":"",
      "icNumDOB":990708,
      "icNumID":4222,
      "icNumState":7,
      "lastName":"Shilan",
      "phoneNumber":"+60123456789",
      "username":"rajashilan"
   }
}

我正在从 firebase 数据库中检索此 JSON 数据。 link to the firebase database picture。

我正在尝试一一访问JSON中的数据,例如: 电子邮件:ronaldoraj57@gmail.com。

databaseRef.orderByChild("icNumID")
.equalTo(parseInt(search1))
.on("value",function(snapshot){
    console.log(snapshot.val());

    var dataJSON=JSON.stringify(snapshot.val());
    var json=JSON.parse(dataJSON);
    document.getElementById("datalist").innerHTML=json.email;

    if(snapshot.val()==null){
        window.alert("IC Number not registered in  database.");
    }

    snapshot.forEach(function(data){
         console.log(data.key);
    });
});

【问题讨论】:

  • 从你的json看来你需要data['EWsd5eHpriTDfhNTJux8IByrkUD2'].email

标签: javascript html json firebase firebase-realtime-database


【解决方案1】:

我认为您根本不需要使用 JSON 方法。试试:

ref.once("value").then(snapshot => {
  snapshot.child("email").val()
})

【讨论】:

【解决方案2】:

使用DataSnapshot.forEach() 循环匹配您的查询的节点,并使用DataSnapshot.exists() 查看是否有任何结果:

databaseRef
  .orderByChild("icNumID")
  .equalTo(parseInt(search1))
  .on("value", function(results){
    if(!results.exists()){
      window.alert("IC Number not registered in  database.");
    }
    else {
      results.forEach(function(snapshot) {
        var json = snapshot.val();
        console.log(json);
        document.getElementById("datalist").innerHTML=json.email;
      });
    }
  });

【讨论】:

  • 工作就像一个魅力,正是我想要的 :) 非常感谢先生!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-16
  • 2015-12-16
  • 1970-01-01
  • 2014-12-20
  • 1970-01-01
相关资源
最近更新 更多