得到快照火力按键不灵

问题描述:

我有这个在我的火力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);时,我得到了我的数据,显然我无法在那里硬编码我的密钥,所以为什么我也不打印呢?

obj.key如果有在字面上叫key对象的关键,这样只会工作:

{ 
    key: "foo" 
} 

你想要的是obj[key],这将查找关键的基于字典查找值的变量值而不是文字引用。

+0

谢谢,我感觉很蠢..比不知道另外4小时的答案更好。 – hunterInt