我是 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}]}
[注意:我错过了已保存数据的所有键,我只能获取该键的值...]
最佳答案
当您对 Firebase 数据库执行查询时,可能会出现多个结果。因此快照包含这些结果的列表。即使只有一个结果,快照也会包含一个结果的列表。
我不知道你的第一个片段应该做什么。但第二个片段可以使用:
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()));
})
}
关于javascript - 如何使用 Node js 从 firebase 数据库以 JSON 格式检索所需的 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38816519/