2017-01-26 6 views
0

これは非常に簡単な質問かもしれませんが、作成することはできません。私はfirebaseとjavascriptを初めて使ったので、たくさん検索しましたが。これは私のfirebaseデータベースの構造です。firebaseの指定されたパスにあるすべてのノードを取得する方法

{ "messages" : { 
"AGA Clinical Trials" : { 
    "test" : { 
    "-KbQDSG-3AXKjk1erhWO" : { 
     "senderName" : "[email protected]", 
    } 
    }, 
    "test-1" : { 
    "-KbQECK7edEok0treaLCI" : { 
     "senderName" : "[email protected]", 
    } 
    } 
} 

}

は、私が欲しいのは、テスト、テスト-1であるAGA臨床試験のすべてのノードのリストです。私はfirebaseを使ってこのクエリを使用しています。

var siteListref = firebase.database().ref('messages').child('AGA Clinical Trials') 

    siteListref.orderByKey().on('value', function(snapshot){ 

     var userName = snapshot.val(); 
     console.log('user name', userName); 
    } 
+1

あなたの質問でJSONの木の絵を用意しました。実際のJSONをテキストとして置き換えてください。このテキストは[Firebaseデータベースコンソール](https://console.firebase.google.com/project/_/database/data/)の[Export JSON]リンクをクリックすることで簡単に取得できます。 。 JSONをテキストとして検索可能にすることで、実際のデータを使ってテストしたり、答えに使用したりすることができます。一般的には、これは良いことです。 –

答えて

0

ロケーションの値イベントをリッスンすると、そのロケーションの値を持つスナップショットが取得されます。したがって、スナップショットにはすべての子ノードがAGA Clinical Trialsの下に含まれます。

var siteListref = firebase.database().ref('messages').child('AGA Clinical Trials') 

siteListref.on('value', function(snapshot){ 
    snapshot.forEach(function(trialSnapshot) { 
     var userName = trialSnapshot.val(); 
     console.log('user name', userName); 
    }); 
} 

forEach()イテレータの正確なコードがおり、それぞれの子ノードの下のデータ構造に依存する:あなたは、おそらくその結果、スナップショットの上にあなたがすべきループを意味し、個々の子ノードを探している

あなたは含まれていませんでした。

Firebaseの子ノードを扱うより慣れ親しんだ方法は、子イベントを購読することです。例えばchild_addedを聞くことによって、あなたはforEach()ループを取り除くことができます:

siteListref.on('child_added', function(snapshot){ 
    var userName = snapshot.val(); 
    console.log('user name', userName); 
} 
+0

私は値を得ることができる、問題は私はちょうどノード名(テスト、test1)が欲しいです。私のユースケースは、AGA臨床試験ユーザーのリストを表示することです。私はjavascriptの私の初心者のスキルの右の原因を取得していないかもしれません。 –

+0

ノードの名前が必要な場合は、 'console.log(snapshot.key)'を使います。 –

関連する問題