2017-07-18 77 views
0

我有這個在我的火力DB:得到快照火力按鍵不靈

{ 
    "vehicles" : { 
    "fz20tqpxUChOM98fNUYGQhtZ83" : { 
     "amount" : 31, 
     "timeStamp" : "2017-07-18T20:31:34Z" 
    }, 
    "sw30tqpxUChOM98fNUrGQhtk33" : { 
     "amount" : 45, 
     "timeStamp" : "2017-07-18T20:31:34Z" 
    } 
    } 

我使用.on得到數據的快照:

var ref = database.ref('vehicles'); 
    ref.on('value', function(snapshot) { 

    var obj = snapshot.val(); 
    for (var key in obj){ 

     console.log(obj);//prints my obj 
     console.log(obj.key);//prints 'undefind' both times (why??) 
     console.log(obj.fz20tqpxUChOM98fNUYGQhtZ83);//prints data 



     if ('fz20tqpxUChOM98fNUYGQhtZ83' === key) {//Just for testing 
      console.log("IT IS ===");    //my 'key' is equal to 
                //the hardcoded key 
     } else { 
      console.log("NOT ==="); 
     } 

    } 
    }); 

當我console.log(obj.key);我得到undefined爲兩個鍵。然而,當我運行console.log(obj.fz20tqpxUChOM98fNUYGQhtZ83);時,我得到了我的數據,顯然我無法在那裏硬編碼我的密鑰,所以爲什麼我也不打印呢?

回答

1

obj.key如果有在字面上叫key對象的關鍵,這樣只會工作:

{ 
    key: "foo" 
} 

你想要的是obj[key],這將查找關鍵的基於字典查找值的變量值而不是文字引用。

+0

謝謝,我感覺很蠢..比不知道另外4小時的答案更好。 – hunterInt