下面,您可以看到这两个日志的输出。第一行代码清楚地显示了我试图访问的属性的完整对象,但在下一行代码中,我无法使用配置访问它。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);
这就是这些行在控制台中打印的内容
当前回答
我刚刚从MongoDB使用Mongoose加载文档时遇到了这个问题。
当在整个对象上运行console.log()时,所有文档字段(存储在db中)都会显示出来。然而,当其他属性(包括_id)正常工作时,一些单独的属性访问器将返回undefined。
事实证明,属性访问器只适用于我的mongodb . schema(…)定义中指定的字段,而console.log()和JSON.stringify()返回存储在db中的所有字段。
解决方案(如果你正在使用Mongoose):确保你所有的db字段都是在Mongoose . schema(…)中定义的。
其他回答
我也有同样的问题。我的解决方案是使用字符串化输出作为解析JSON的输入。这对我很管用。希望对你有用
var x =JSON.parse(JSON.stringify(obj));
console.log(x.property_actually_now_defined);
我也面临同样的问题。
从服务器,我在json_encode中返回数据。 像这样
echo json_encode($res);
当我返回一个不带json_encode的简单PHP数组后,问题就解决了。
return $res;
如果这是在使用Mongoose时发生的问题,则可能会发生以下情况:
console.log(object)
返回所有内容,包括所需的键。
console.log(object.key)
返回未定义。
如果发生了这种情况,就意味着Mongoose Schema中缺少键。添加它将解决这个问题。
我的数据只是json数据字符串。(这个变量在会话中存储为json字符串)。
console.log(json_string_object)
->只返回该字符串的表示形式,无法区分是string还是object。
所以为了让它工作,我只需要把它转换回真实对象:
object = JSON.parse(json_string_object);
我今天在这个问题上很纠结,我想我会留下我的解决方案。
我通过ajax获取一个数据对象,就像这样: {“常量”:{“value1”:“x”,“value2”:“y”},“国际化”{“data1”:“x”,“data2 ": " y "}}
假设这个对象在一个名为data的变量中。每当我引用数据时。i18n没有定义。
Console.log (data)显示了预期的对象 console.log(Object.keys(data))显示["constants","i18n"] 将i18n重命名为inter并没有改变任何东西 我甚至尝试切换数据,使“i18n”成为第一个对象 移动代码以确保完全设置了对象,ajax承诺也没有问题。
没有什么帮助…然后在服务器端,我将数据写入php日志,它揭示了这一点:
{“常量”:{“value1”:“x”,“value2”:“y”},“\ u045618n”{“data1”:“x”,“data2 ": " y "}}
索引键中的“i”实际上是一个u0456(西里尔字母i)。这在我的php编辑器或浏览器控制台日志中不可见。只有php日志显示这个…这是个棘手的问题……