从快照获取firebase密钥不起作用

时间:2017-07-18 22:35:00

标签: javascript json database firebase firebase-realtime-database

我在我的firebase 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 个答案:

答案 0 :(得分:1)

obj.key仅在字面上称为key的对象中有一个键时才会起作用,如下所示:

{
    key: "foo"
}

你想要的是obj[key],它将根据变量值的字典查找而不是文字参考来查找键的值。