2016-08-07 4 views
0

ノードjとfirebaseを初めて使用しました。 検索基準に応じてFirebaseデータベースに保存されているJSONデータを取得しようとしています。次の例でノードjsを使用してJSON formateのfirebaseデータベースから目的のJSONオブジェクトを取り出す方法

は:

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

が、両方は私に所望の出力を提供するために、失敗:必要 出力は、次のとおりです。

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

[注:私は、私はなっmは私の保存されたデータのすべてのキーを逃しましたそのキーへの値のみ]

答えて

1

Firebaseデータベースに対してクエリを実行すると、複数の結果が出現する可能性があります。したがって、スナップショットにはそれらの結果のリストが含まれています。結果が1つだけの場合でも、スナップショットには1つの結果のリストが含まれます。

あなたの最初のスニペットが何をすべきか分かりません。あなたは個別にそれぞれの子のために発射され、child_addedのために聞くことができる代わりに

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

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

あなたは手の込んだでしたが、2番目のスニペットはで動作させることができますか? – sg7

関連する問題