2017-01-28 6 views
1

私のFireabseデータベース構造は次のとおりです。ハードコードされた値ではない20170116キーのデータを取得したい。それは動的なキーです。これが私の目的球であるJava Scriptを使用してFirebaseデータベース内のネストされた子の値を取り出す方法は?

function getData(prospectId) { 
    database.ref('users/'+prospectId).once('value').then(function(snapshot) { 
     var prospectId = snapshot.key ; 
     console.log("prospectId : "+ prospectId); // output is : prospectId : 1104812 

     snapshot.forEach(function(childSnapshot) { 
      var businessUrl = childSnapshot.key; 
      console.log("businessUrl : "+ businessUrl); // output is : businessUrl : http:\\www.abc.com 
      var dates = Object.keys(childSnapshot.val()); 
      console.log("dates : "+ dates); //output is : dates : 20170116,20170117,20170119,20170121 
      var singleDate = dates[0]; 
      console.log("singleDate : "+ singleDate); //output is : singleDate : 20170116 
     }); 
    }); 
} 

getData(1104812); 

Here is my Fireabse database structure

20170116日付データやスナップショットを取得するために、どのように私のようないくつかのキーと値を得ましたか。

+0

推測:これらのノードの

なしたものが1つのレベル深いツリーにある、子供clientUrlまたはdistrictIdを持っていません。そうでない場合は(そして今後の質問のために)JSONの画像をテキストとして実際のJSONに置き換えてください。[Firebaseデータベースコンソール](https://console.firebase)の[Export JSON]リンクをクリックすると簡単に取得できます。 google.com/project/_/database/data/)。 JSONをテキストとして検索可能にすることで、実際のデータを使ってテストしたり、答えに使用したりすることができます。一般的には、これは良いことです。 –

答えて

2

/users/1104812に値リスナーを接続しています。そのため、コールバックで取得するスナップショットには、子ノードが含まれます(201701162017011720170119)。

子供をループすると(snapshot.forEach(function()、あなたのchildSnapshotは順番にそれぞれのノードになります。以下

database.ref('users/'+prospectId).once('value').then(function(snapshot) { 
    var prospectId = snapshot.key ; 

    snapshot.forEach(function(snapshot1) { 
    console.log(snapshot1.key); // e.g. "http://..." 
    snapshot.forEach(function(snapshot2) { 
     console.log(childSnapshot.key); // e.g. "20170116" 
     childSnapshot.forEach(function(snapshot3) { 
     console.log(grandchildSnapshot.key); // e.g. "-Kb9...gkE" 
     console.log(grandchildSnapshot.val().districtId); // "pne" 
     }); 
    }); 
    }); 
}); 
+0

あなたがコードに書いたものは何でも、私はその値を記録していて、それは未定義です。 'console.log(childSnapshot.key)'この行は 'http:\\ www ...'、 'console.log(grandchildSnapshot.key)'と表示されます。 '20170116'、' console.log(grandchildSnapshot。 val()。districtId) 'これは' undefined'と表示されます。 –

+0

ええ、それはあなたの周りにもう一つのレベルがJSONであるように見えます。別のブロックを追加するようにコードを更新しました。 –

関連する問題