微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 如何使用_bsontype属性处理来自mongoDB的文档

嗨,我正在浏览一个JSON数组,结果是在mongoDB中查询文档.
事实是,我得到以下行为,我不知道为什么我得到这个:

in key: _bsontype |value: ObjectID
in key: id |value: S÷¯çò9þ w
in key: _bsontype |value: ObjectID
in key: id |value: S÷¯çò9þ h
in key: _bsontype |value: ObjectID
in key: id |value: S÷¯çò9þ h
in key: name |value: Default Process
in key: processType |value: Public
in key: id |value: BPMNDiagram_1
in key: name |value: procurement subprocess

正如你所看到的,这就是磨损…这是我的代码:

function changeIDs(json, map, count){
  for(var key in json){
    if(json.hasOwnProperty(key))
    if(typeof json[key] === 'object')
      changeIDs(json[key], map, count);
    else{
        console.log("in key: "+key + " |value: "+json[key]);
    }

  }
}

这是我的输入(json参数)的一部分:

[
    {
        "_id": "538df78eafe7f28d39fe2077",
        "processId": "538df71bafe7f28d39fe2068",
        "processMeta": {
            "id": "538df71bafe7f28d39fe2068",
            "name": "Default Process",
            "processType": "Public"
        },
        "diagram": {
            "id": "BPMNDiagram_1",
            "name": "procurement subprocess"
        },
        "plane": {
            "id": "BPMNPlane_1",
            "bpmnElement": "538df71bafe7f28d39fe2068"
        }
    },
{other objects..},{other objects..}
]

是的,processId和_id是使用ObjectId函数生成的,看起来这里出现了问题,我不确定这个,但我的猜测是每个_bsontype对应mongoSB对象ID,这是一个对象所以我的函数去了在这个递归内…得到以下S÷¯çò9þW..,我是对的吗?

似乎如果我无法在我的for中获得“processId”和“_id”键,因此,我猜是我的_bsontype …
所以最后,我的问题是,如何在没有获得结果的情况下浏览我的对象?,你必须看到有一个“id”属性包含垃圾数据,我不希望它在我的结果中查找例如,所有键ID,但仍然能够获取我的属性“processId”或“_id”的ObjectId.str值.

提前致谢.

解决方法:

以防万一,如果将来其他一些不幸的家伙像我一样得到同样的问题.

正如你可以看到我的函数changeIDs得到3个参数,我只是改变了json参数,它应该是一个json(它是)你可以在我的问题中看到我的json输出为文本,所以它是一个有效的json,但是我做了一个stringify字符串的解析..然后我再试一次..它正在工作.

那么解决方案呢? newJson = JSON.parse(JSON.stringify(json));

为什么?好吧,我更好的选择是,通过这种方式,当我们对对象进行字符串化时,它会以下列方式进行对象更改:

>未定义的值在结果中消失.
>丢失原型属性
>功能死了

例如,如果一个json有一个对象DATE,那么这个对象将字符串化为Date.toString(),因此它将存储字符串表示.如果函数没有到字符串将是未定义的.

这就是为什么在执行stringify之后它正在工作,我的函数ObjectId()没有生存到我的stringify,但它转换为它包含的字符串值,即Mongo对象id值…

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐