我有一个关于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 属性,即使它与控制台一起打印,我也会不断未定义.log用于完整对象
我试过:
stringyfied.id
stringyfied["_id"]
stringyfied["id"]
stringyfied._id.$oid
stringyfied.$oid
),因为 JSON.stringify() 是转换为字符串,parse 是获取对象。 字符串ifiedID 是一个字符串
返回的是一个包含一个对象的数组。
访问_id
的方式是使用 stringyfied[0]._id
.但是,将对象从数组中拉出会更干净。
有几种方法可以做到这一点。如果此查询将只返回一个结果,并且这就是你想要的,则可以改用 findOne 方法。如果查询可能返回多个文档,则需要循环访问返回的结果。
我也同意@dariogriffo,你需要在字符串化的JSON变量上使用JSON.parse()。