2016-06-20 11 views
4

複数の値に基づいてクエリを並べ替える必要があります。問題は、オブジェクトキーtypeを選択することができないということです。私はそうするとundefinedを得るためです。Firebase - Object.keyは未定義を返します

TRAVEL OBJ: { 
    "-KKiZKAVH0-QulKnThhF" : { 
    "date" : 1466439009, 
    "dest" : 1, 
    "fbKey" : "-KKiZKAVH0-QulKnThhF", 
    "type" : 1 
    } 
} 

秒1:TRAVEL TYPE: undefined

任意のアイデア、私はミスを犯した

var filterDataAccordingToDate = function(ref, startTime, endTime, travelType) { 

      ref.orderByChild('date') 
      .startAt(startTime).endAt(endTime) 
      .once('value', function(snapshot) { 
       var travel = snapshot.val(); 

       console.log("TRAVEL OBJ: " + util.inspect(travel, false, null)); 
       console.log("TRAVEL TYPE: " + travel.type); 

       if (travel.type == travelType) { 
        // DO STUFF 
       } 

      }); 
    } 

最初console.log()は正しいオブジェクトを返しますか?

答えて

2

複数のオブジェクトを取得するので、各オブジェクトの値を取得するには、複数のオブジェクトを反復処理する必要があります。

for (var key in travel) { 
     console.log("TRAVEL OBJ: " + util.inspect(travel[key], false, null)); 
     console.log("TRAVEL TYPE: " + travel[key].type); 
} 
+1

.forEach()メソッドを使用します。 –

3

ため、私は `snapshot.forEach()`メソッドを使用することをお勧めJavaScriptのプロトタイプの性質にDataSnapshot

snapshot.forEach(function(snap) { 
    var key = snap.key; 
    if (key === travelType) { 
    // Do stuff 
    } 
});