2017-09-22 14 views
0

私はfirebaseをセットアップしました。ここでの構造は次のとおりです。firebase - javascriptオブジェクトが未定義に戻る

enter image description here

私はトラブル「newNroomID」の値を取得したのです(つまりa6QVH、a7LTNなど。です)。 この値は、他の変数値との比較に使用されます。

私はJavaScriptで、それはこのように行うことができるオブジェクトの値にアクセスすることを知っている:

var card = { king : 'spade', jack: 'diamond', queen: 'heart' } 
card.jack = 'diamond' 

をそれがfirebaseが付属していますか、確実に十分な私は何かが欠けていたときに、それは話違うようです。ここに私のコードです。

var pokerRoomsJoin = firebase.database().ref(); // this is how i set it up this block of code is for reading the data only 
pokerRoomsJoin.on('value', function(data){ 
    var rID = data.val(); 
    var keys = Object.keys(rID); 
    var callSet = false; 
    for (var i = 0 ; i < keys.length; i++) { 
     var indexOfKeys = keys[i]; 
     var roomMatching = rID[indexOfKeys]; 
     var matchID = roomMatching.newNroomID; // this does not work alwaus give me undefined 
     console.log('this return :' + matchID + ' WHY!') 
     console.log(roomMatching) 
     if(matchID == 'ffe12'){ // 'ffe12' is actually a dynamic value from a paramiter 
      callSet = true; 
     } 
    } 
}) 

、ここでコンソールログの結果である:

enter image description here

妙に私はへのREFを設定している場合のみ、この

var matchID = roomMatching.newNroomID // it return a6QVH and a7LTN one at a time inside the loop 

のようにアクセスすることができています:

var pokerRoomsJoin = firebase.database().ref('room-' + roomId); 

私は検索しようとしましたが、私の構造とは異なっているようです。私は悪いデータ構造を持っていますか?この悲惨さから私を救いなさい、事前に感謝!

答えて

0

1. var indexOfKeys = keys[i]; 

は今 indexOfKeysキー 部屋-IDここ

2. var roomMatching = rID[indexOfKeys]; 

roomMatchingを開催します、私たちはラインによってループラインの内のコードが表示されますみようオブジェクトを保持する

roomMatchingは一つだけ 性質を持っているので
{ 'firebasePushId': { newDealerName: 'b', 
        ..., 
       } 
} 

3.  var matchID = roomMatching.newNroomID; 

このコースは、をfirebasePushId、未定義になります。

newNroomIDにアクセスするには、あなたは、このようfirebasePushKeysがObject.keys(roomMatching)を使用することになります取得する

matchID = roomMatching.firebasePushKey.newNroomID . 

1つの方法は何かをしなければなりません。

関連する問題