猫鼬数组类型数据转换为对象(带有键和值的映射)

时间:2019-04-23 12:14:12

标签: node.js mongoose

我有动态json(未定义结构),必须将其存储到数据库中。

Github上也报告了错误。

https://github.com/Automattic/mongoose/issues/7733

userData = {"username:":"", "password":""};

期望: 保存的文档应该是这样的。 channelTaxonomyList 必须输入 Array

let data = {
    "channelTaxonomyList": [
        { "categoryId": "10187", "taxonomyName": "Website Taxonomy" },
        { "categoryId": "10237", "taxonomyName": "Website Taxonomy" },
        { "categoryId": "10025", "taxonomyName": "Website Taxonomy" },
        { "categoryId": "10030", "taxonomyName": "Website Taxonomy" },
        { "categoryId": "10157", "taxonomyName": "Website Taxonomy" },
        { "categoryId": "10278", "taxonomyName": "Website Taxonomy" },
        { "categoryId": "10055", "taxonomyName": "Website Taxonomy" }
    ]
};

let newProduct = new product(data);

newProduct.save(function (err, savedProduct) {
    if (err) {
        console.log("err", err)
    } else {
        console.log("savedProduct", savedProduct)
    }
})

实际结果: channelTaxonomyList转换为Object(具有键和值的Map Type)。 数组索引变为键,数组元素变为值。

{ _id: 5cbefb9d663e872f07f79467,
  channelTaxonomyList: 
   [ { categoryId: '10187', taxonomyName: 'Website Taxonomy' },
     { categoryId: '10237', taxonomyName: 'Website Taxonomy' },
     { categoryId: '10025', taxonomyName: 'Website Taxonomy' },
     { categoryId: '10030', taxonomyName: 'Website Taxonomy' },
     { categoryId: '10157', taxonomyName: 'Website Taxonomy' },
     { categoryId: '10278', taxonomyName: 'Website Taxonomy' },
     { categoryId: '10055', taxonomyName: 'Website Taxonomy' } ],
  __v: 0 }

正如我上面所描述的,json没有预定义的结构,密钥可能会在运行时更改,因此在 schema 中,我使用的是 {strict:false} 。 / p>

我的模式和模型是:

{ _id: 5cbefb85a09e6a1d4376ebec,
  channelTaxonomyList:
   { '0': { categoryId: '10187', taxonomyName: 'Website Taxonomy' },
     '1': { categoryId: '10237', taxonomyName: 'Website Taxonomy' },
     '2': { categoryId: '10025', taxonomyName: 'Website Taxonomy' },
     '3': { categoryId: '10030', taxonomyName: 'Website Taxonomy' },
     '4': { categoryId: '10157', taxonomyName: 'Website Taxonomy' },
     '5': { categoryId: '10278', taxonomyName: 'Website Taxonomy' },
     '6': { categoryId: '10055', taxonomyName: 'Website Taxonomy' } },
  __v: 0 }

节点版本: 8.10.0

@ types /猫鼬: 5.3.24

猫鼬:5.4.20

注意:在本地计算机(操作系统:Mac-High Sierra)上可以正常工作。                该错误可在AWS服务器(操作系统:Ubuntu:18.04.2 LTS)上产生

0 个答案:

没有答案