MongoDB中有问题的JSON prop / field

时间:2017-05-17 20:14:51

标签: javascript json node.js mongodb express

我收到了来自'请求'的回复使用以下代码:

collection.distinct('id', (err, docs) => {
    docs.forEach(id => {
        let url = 'url.com/id=' + id
        request(url, (error, response, body) => {
            var resp = JSON.parse(response.body.replace('._', '_'));
            collection2.insert(resp);
        });
    });
});

response.body返回一个字符串化的JSON,其中包含一些包含句点的字段和属性,例如:

MISC._EXTERIOR_FEATURES": {
    "id": 29,
    "name": "MISC._EXTERIOR_FEATURES",
    "attributes": {
      "ROOF_RACK": {
      "id": 0,
      "name": "ROOF_RACK",
      "value": "roof rack"
    }
}

代码解释:对于集合中的每个不同的id,请求id为url的url。然后,使用response.body(string),我使用.replace()来"清理"字符串化的JSON,然后我解析它,然后我将它插入到collection2。

错误:

(node:24552) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 33): Error: key MISC._EXTERIOR_FEATURES must not contain '.'
(node:24552) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 34): Error: key MISC._INTERIOR_FEATURES must not contain '.'
(node:24552) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 35): Error: key MISC._EXTERIOR_FEATURES must not contain '.'
(node:24552) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 36): Error: key MISC._INTERIOR_FEATURES must not contain '.'
(node:24552) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 37): Error: key MISC._INTERIOR_FEATURES must not contain '.'
(node:24552) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 38): Error: key MISC._INTERIOR_FEATURES must not contain '.'
(node:24552) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 39): Error: key MISC._EXTERIOR_FEATURES must not contain '.'

1 个答案:

答案 0 :(得分:2)

不确定为什么密钥不得包含"。",但您的"替换"仅替换第一次出现。试试regex。

.replace(/\._/g, '_')