2016-08-07 3 views
0

I m new to Node js and firebase. Я пытаюсь получить данные JSON, хранящиеся в базе данных firebase, в зависимости от некоторых критериев поиска.Как получить желаемый объект JSON из базы данных firebase в форматировании JSON с помощью Node js

В следующем примере:

See this Image

Переменная 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())); 
    }) 
} 

но и не в состоянии обеспечить мне желаемый результат: OUTPUT DESIRED является:

{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}]} 

[Примечание: Я пропустил все ключи от моих сохраняемых данных я получаю только значения для этих ключей ...]

ответ

1

Когда вы выполняете запрос к базе данных 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())); 
    }) 
} 
0

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); 
}); 
+0

Не могли бы вы уточнить? – sg7

Смежные вопросы