2016-08-07 14 views
0

Ich bin neu bei Node js und firebase. Ich versuche, JSON-Daten abzurufen, die in Abhängigkeit von einigen Suchkriterien in meiner Firebase-Datenbank gespeichert sind.So rufen Sie das gewünschte JSON-Objekt aus der Firebase-Datenbank im JSON-Format mithilfe von Knoten ab js

Im folgenden Beispiel:

See this Image

Die Variable Childname ist der Schlüssel zu deren Wert wir haben suchen (col1) und findvalue ist Wert für diesen Schlüssel (Wert für col1 zu sein)

dafür habe ich versucht, die folgenden Codes:

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())); 
    }) 
} 

aber beide versagt mir die gewünschte Ausgabe zu liefern: OUTPUT SOLL ist:

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

Aber immer:

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

[Anmerkung: vermisste ich alle Schlüssel meiner gespeicherten Daten Ich bin immer Nur Werte für diese Schlüssel ...]

Antwort

1

Wenn Sie eine Abfrage für die Firebase-Datenbank ausführen, werden möglicherweise mehrere Ergebnisse angezeigt. Der Snapshot enthält also eine Liste dieser Ergebnisse. Selbst wenn nur ein Ergebnis vorhanden ist, enthält der Snapshot eine Liste mit einem Ergebnis.

Ich kann nicht herausfinden, was Ihr erster Ausschnitt tun soll. Aber das zweite Snippet kann mit arbeiten gemacht werden:

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())); 
    }); 
    }) 
} 

Alternativ können Sie für child_added hören, die für jedes Kind einzeln ausgelöst:

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

Können Sie das näher erläutern? – sg7