我在我的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);
时,我得到了我的数据,显然我不能在那里硬编码我的密钥,所以为什么它不打印时我也问它?
答案 0 :(得分:1)
obj.key
仅在字面上称为key
的对象中有一个键时才会起作用,如下所示:
{
key: "foo"
}
你想要的是obj[key]
,它将根据变量值的字典查找而不是文字参考来查找键的值。