【问题标题】:How to retrieve desired JSON object from firebase database in JSON formate using Node js如何使用 Node js 从 JSON 格式的 firebase 数据库中检索所需的 JSON 对象
【发布时间】:2016-12-13 11:30:55
【问题描述】:

我是 Node js 和 firebase 的新手。 我正在尝试根据某些搜索条件获取存储在我的 firebase 数据库中的 JSON 数据。

在以下示例中:

变量 childname 是我们必须搜索其值的键(col1),findvalue 是该键的值(col1 的值)

为此,我尝试了以下代码:

function searchKeyValue(headNode,childname,findvalue) {
  var ref = firebase.database().ref("data/"+headnode);
  ref.orderByKey().on("child_added", function(snapshot) {
    //extracting Query
    ref.orderByChild(childname).equalTo(findvalue).on("value",function (snapshot) {
      console.log(snapshot.val());
    });//end of Query
  });//end oder by key
}// end of function 

function searchKeyValue(headnode,childname,findvalue) {
  var ref = firebase.database().ref("data");
  nextref=ref.child(headnode);
  nextref.orderByChild(childname).equalTo(findvalue).on("value",function (snapshot) {
    console.log(JSON.stringify(snapshot.val()));
  })
}

但两者都未能为我提供所需的输出: 期望的输出是:

{1:"152",2:"233.69",3:"-191.7",4:"133.69",5:"-199.769",6:"AMUKH",7:"4",{"port":4},8:"NTP",9:{"Dup":12345}]}

但是得到:

{"-KOZ2Md3NZ_vWddAIBj3":[null,"152","233.69","-191.7","133.69","-199.769","AMUKH","4",{"port":4},"NTP",{"Dup":12345}]}

[注意:我错过了我保存的数据的所有键,我只获得了这些键的值...]

【问题讨论】:

    标签: javascript json node.js firebase-realtime-database


    【解决方案1】:

    当您对 Firebase 数据库执行查询时,可能会有多个结果。所以快照包含这些结果的列表。即使只有一个结果,快照也会包含一个结果列表。

    我不知道你的第一个 sn-p 应该做什么。但是第二个 sn-p 可以使用:

    function searchKeyValue(headnode,childname,findvalue) {
      var ref = firebase.database().ref("data");
      nextref=ref.child(headnode);
      nextref.orderByChild(childname).equalTo(findvalue).on("value",function (snapshot) {
        snapshot.forEach(function(childSnapshot) {
          console.log(JSON.stringify(childSnapshot.val()));
        });
      })
    }
    

    您也可以收听child_added,它会为每个孩子单独触发:

    function searchKeyValue(headnode,childname,findvalue) {
      var ref = firebase.database().ref("data");
      nextref=ref.child(headnode);
      nextref.orderByChild(childname).equalTo(findvalue).on("child_added",function (childSnapshot) {
        console.log(JSON.stringify(childSnapshot.val()));
      })
    }
    

    【讨论】:

      【解决方案2】:

      var v = firebase.database().ref().child("data");
      var no;
      count = 0;
      v.on("child_added", snap => {
        count++;
        no = snap.child("HeadNode").val();
      
        //console.log(no , count);
      });
      

      【讨论】:

      • 您能详细说明一下吗?
      猜你喜欢
      • 1970-01-01
      • 2018-08-06
      • 2021-07-10
      • 1970-01-01
      • 2017-12-06
      • 2022-01-24
      • 2016-04-10
      • 2019-10-01
      • 1970-01-01
      相关资源
      最近更新 更多