下面,您可以看到这两个日志的输出。第一行代码清楚地显示了我试图访问的属性的完整对象,但在下一行代码中,我无法使用配置访问它。Col_id_3(见截图中的“undefined”?)有人能解释一下吗?我也可以访问除field_id_4之外的所有其他属性。
console.log(config);
console.log(config.col_id_3);
这就是这些行在控制台中打印的内容
下面,您可以看到这两个日志的输出。第一行代码清楚地显示了我试图访问的属性的完整对象,但在下一行代码中,我无法使用配置访问它。Col_id_3(见截图中的“undefined”?)有人能解释一下吗?我也可以访问除field_id_4之外的所有其他属性。
console.log(config);
console.log(config.col_id_3);
这就是这些行在控制台中打印的内容
当前回答
如果你使用的是TYPESCRIPT和/或ANGULAR,它可能是这样的!
.then((res: any) => res.json())
设置响应类型为任何为我修复了这个问题,我无法访问响应上的属性,直到我设置res: any
属性“_body”在类型“Response”上不存在
其他回答
首先,像下面这样检查类型:
console.log(typeof config);
如果上面的命令打印object,那么很简单,你只需使用括号符号。如果您想动态搜索属性的值,括号符号可能非常有用。
执行以下命令:
console.log(config[col_id_3]);
如果它是一个字符串,你需要先在对象中解析。要做到这一点,你需要执行以下命令:
var object = JSON.parse(config);
然后使用括号来访问属性,如下所示:
console.log(object[col_id_3]);
在我的情况下,我将一个对象传递给一个承诺,在承诺中,我向对象添加了更多的键/值,当它完成时,承诺返回对象。
然而,我稍微多看了一下,承诺是在完全完成之前归还对象……因此,我的其余代码试图处理更新的对象,而数据还没有出现。但就像上面一样,在控制台中,我看到对象完全更新,但无法访问键-它们返回时未定义。直到我看到了这个:
console.log(obj) ;
console.log(obj.newKey1) ;
// returned in console
> Object { origKey1: "blah", origKey2: "blah blah"} [i]
origKey1: "blah"
origKey2: "blah blah"
newKey1: "this info"
newKey2: "that info"
newKey3: " more info"
> *undefined*
[i]是一个小图标,当我悬停在它上面时,它说左边的对象值在记录时被快照,下面的值刚刚被评估。这时我突然想到,我的对象在承诺完全更新之前就已经被评估了。
如果你使用的是TYPESCRIPT和/或ANGULAR,它可能是这样的!
.then((res: any) => res.json())
设置响应类型为任何为我修复了这个问题,我无法访问响应上的属性,直到我设置res: any
属性“_body”在类型“Response”上不存在
我也有同样的问题。我的解决方案是使用字符串化输出作为解析JSON的输入。这对我很管用。希望对你有用
var x =JSON.parse(JSON.stringify(obj));
console.log(x.property_actually_now_defined);
我刚刚从MongoDB使用Mongoose加载文档时遇到了同样的问题。
原来,我使用属性find()只返回一个对象,所以我把find()改为findOne(),一切都为我工作。
解决方案(如果您正在使用Mongoose):确保只返回一个对象,这样您就可以解析它的对象。Id或者它将被视为数组所以你需要像访问对象[0]。Id那样访问它。