我能';t读取存储在MongoDB(MongoDB服务)中的JSON对象的_id属性

我能';t读取存储在MongoDB(MongoDB服务)中的JSON对象的_id属性,json,mongodb,heroku,objectid,Json,Mongodb,Heroku,Objectid,我有一份关于Heroku上mongodb的文件。文档中的每个对象都有一个系统生成的对象id,格式为 "_id": { "$oid": "xxxxxxxxxxxxxxxxxxxxxxxx" } 当我进行查询并从服务器获取响应时,我使用JSON.stringify对响应进行字符串化,并将对象记录在服务器控制台上。执行此操作时,会记录以下内容: this is the response: [{"creator":"al","what[place]":"home","what[

我有一份关于Heroku上mongodb的文件。文档中的每个对象都有一个系统生成的对象id,格式为

"_id": {
        "$oid": "xxxxxxxxxxxxxxxxxxxxxxxx"
    }
当我进行查询并从服务器获取响应时,我使用JSON.stringify对响应进行字符串化,并将对象记录在服务器控制台上。执行此操作时,会记录以下内容:

this is the response: [{"creator":"al","what[place]":"home","what[time [start]":"22:00","what[time][end]":"","what[details]":"","who[]":["joe","kay","mau"],"_id":"xxxxxxxxxxxxxxxxxxxxxxxx"}]
在完整对象被记录之后,我尝试记录id以确保我可以访问它。。。然后我想将id传递给另一个对象,这样我就可以引用记录的对象

我现在有这个:

var stringyfied = JSON.stringify(res);
console.log("this is the response: " + stringyfied);
console.log("id: " + stringyfied._id);
但是当项目被记录时,我得到

id: undefined
而不是

id: "xxxxxxxxxxxxxxxxxxxxxxxx"
无论我如何尝试访问_id属性,我总是无法定义它,即使它被完整对象的console.log打印出来

我试过:

stringyfied.id
stringyfied["_id"]
stringyfied["id"]
stringyfied._id.$oid
stringyfied.$oid

返回的是一个包含一个对象的数组

访问
\u id
的方法是使用
stringyfied[0]。\u id
。但是,将对象从数组中拉出会更干净

有几种方法可以做到这一点。如果此查询只返回一个结果,而这正是您所需要的,则可以使用。如果查询可能返回多个文档,那么您将需要


我也同意@dariogriffo,您需要在stringized JSON变量上使用它。

您需要使用JSON.parse(),因为JSON.stringify()要转换为字符串,parse要获取对象。stringifiedid是一个字符串

谢谢!这是有道理的。我现在有:console.log(“这是响应:+JSON.stringify(res));console.log(“id:+res[0]。\u id);这是可行的,有两个问题,首先我试图访问字符串,就像它是一个对象一样。服务器的响应首先是数组中的一个对象,因此我不需要将其转换为字符串,而是访问数组的第一个元素。另一个问题是,我访问数组的时候好像它是一个JSON对象,而不是像您建议的那样从数组中取出对象。问题现在已经解决了。再次感谢!谢谢你@dariogriffo,你是对的。实际上,我甚至不需要首先将对象转换为字符串,当服务器将其作为响应返回时,它已经是数组中的对象了。我一拿回它就不必要地把它变成了一根绳子。