下面,您可以看到这两个日志的输出。第一行代码清楚地显示了我试图访问的属性的完整对象,但在下一行代码中,我无法使用配置访问它。Col_id_3(见截图中的“undefined”?)有人能解释一下吗?我也可以访问除field_id_4之外的所有其他属性。

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

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


当前回答

首先,像下面这样检查类型:

console.log(typeof config);

如果上面的命令打印object,那么很简单,你只需使用括号符号。如果您想动态搜索属性的值,括号符号可能非常有用。

执行以下命令:

console.log(config[col_id_3]);

如果它是一个字符串,你需要先在对象中解析。要做到这一点,你需要执行以下命令:

var object = JSON.parse(config);

然后使用括号来访问属性,如下所示:

console.log(object[col_id_3]);

其他回答

好吧,我经过了一个让我对新循环感到害怕的情况,感谢我的老派。

forEach循环和for(a in obj)循环都会产生错误的信息和错误,这取决于对象的类型和属性!!

老的好

for(var i=0, max=arr.length; i<max; i++)
{ //Properties available correctly!

   arr[i].property        //both work inside old school loop!
   arr[i][property]  
}             

以防这对某人有帮助,我有一个类似的问题,这是因为有人在我正在使用的对象中创建了. tojson的覆盖。所以对象是这样的:

{
  foo: {
         bar: "Hello"
         baz: "World"
       }
}

但是.toJSON()是:

toJSON() {
  return this.foo
}

所以当我调用JSON.stringify(myObject)它返回"{"bar": "Hello", "baz": "World"}"。然而,Object.keys(myObject)显示了“foo”。

我遇到过这样的问题,发现解决方案与Underscore.js有关。我最初的日志记录毫无意义:

console.log(JSON.stringify(obj, null, 2));

> {
>   "code": "foo"
> }

console.log(obj.code);

> undefined

我还通过查看对象的键找到了解决方案:

console.log(JSON.stringify(Object.keys(obj)));

> ["_wrapped","_chain"]

这让我意识到obj实际上是一个围绕对象的Underscore.js包装器,最初的调试对我撒谎了。

如果你使用的是TYPESCRIPT和/或ANGULAR,它可能是这样的!

.then((res: any) => res.json())

设置响应类型为任何为我修复了这个问题,我无法访问响应上的属性,直到我设置res: any

属性“_body”在类型“Response”上不存在

我没有得到MongoDB错误消息在抛出错误在我的NodeJS API响应,所以我做了以下工作

// It was not working
console.log(error.message) // prints the error
let response = error;
// message property was not available in the response.
/* 
{
  "status": "error",
  "error": {
    "driver": true,
    "name": "MongoError",
    "index": 0,
    "code": 11000,
    "keyPattern": {
      "event_name": 1
    },
    "keyValue": {
      "event_name": "followup"
    }
  }
}
*/
// so I did this
let message = error.message;
let response = JSON.parse(JSON.stringify(error));
response.message = message;
// message property is now available in the response.
/* 
{
  "status": "error",
  "error": {
    "driver": true,
    "name": "MongoError",
    "index": 0,
    "code": 11000,
    "keyPattern": {
      "event_name": 1
    },
    "keyValue": {
      "event_name": "followup"
    },
    "message": "E11000 duplicate key error collection: mycollections.notificationevents index: event_name_1 dup key: { event_name: \"followup\" }"
  }
}
*/