我无法读取存储在MongoDB(MongoLab服务)中的JSON对象的_id属性



我有一个关于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.parse(

),因为 JSON.stringify() 是转换为字符串,parse 是获取对象。 字符串ifiedID 是一个字符串

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

访问_id的方式是使用 stringyfied[0]._id .但是,将对象从数组中拉出会更干净。

有几种方法可以做到这一点。如果此查询将只返回一个结果,并且这就是你想要的,则可以改用 findOne 方法。如果查询可能返回多个文档,则需要循环访问返回的结果。

我也同意@dariogriffo,你需要在字符串化的JSON变量上使用JSON.parse()。

相关内容

  • 没有找到相关文章

最新更新