解析JSON数据返回未定义

时间:2018-09-24 00:22:36

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

  {
   "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);
    });
});

2 个答案:

答案 0 :(得分:0)

使用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;
      });
    }
  });

答案 1 :(得分:0)

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

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