无法访问对象属性,即使它显示在控制台日志中

2022-08-29 23:21:02

下面,您可以看到这两个日志的输出。第一个清楚地显示了包含我尝试访问的属性的完整对象,但在下一行代码中,我无法访问它(请参阅屏幕截图中的“未定义”?)。谁能解释一下?除了其他所有财产之外,我都可以进入。config.col_id_3field_id_4

console.log(config);
console.log(config.col_id_3);

这就是这些行在控制台中打印的内容

Console output


答案 1

的输出具有误导性;仅当您通过单击 展开控制台中显示的对象树时,才会解决所显示对象的状态。它不是对象在放置对象时的状态。console.log(anObject)>console.log

相反,请尝试 ,甚至,您将看到键,或调用 时对象的状态。console.log(Object.keys(config))console.log(JSON.stringify(config))console.log

您(通常)会发现在通话添加了密钥。console.log


答案 2

我刚刚遇到了这个问题,使用Mongoose从MongoDB加载的文档。

在整个对象上运行时,将显示所有文档字段(存储在数据库中)。然而,当其他(包括)正常工作时,一些单独的属性访问器会返回。console.log()undefined_id

事实证明,属性访问器仅适用于我的定义中指定的那些字段,而并返回存储在db中的所有字段。mongoose.Schema(...)console.log()JSON.stringify()

解决方案(如果您使用的是 Mongoose):确保在 中定义了所有 db 字段。mongoose.Schema(...)