繁体   English   中英

在mysql Sequelize + Nodejs中将数组和对象转换为大容量插入

[英]Conversion of Array and objects to bulk insert in mysql Sequelize + Nodejs

这是我的json对象:

    {
    "groups":

 [
        {
            "id": 1,
            "groupname": "Angular",
            "createdAt": "2017-12-05T09:36:05.000Z",
            "updatedAt": "2017-12-05T09:36:05.000Z",
            "contactgroups": [
            {
                "id": 1,
                "contact":
                {
                    "gsm": "12345"
                }
            },
            {
                "id": 3,
                "contact":
                {
                    "gsm": "54321"
                }
            },
            {
                "id": 4,
                "contact":
                {
                    "gsm": "99999"
                }
            }],
            "select": true
        },
        {
            "id": 2,
            "groupname": "React",
            "createdAt": "2017-12-05T09:36:10.000Z",
            "updatedAt": "2017-12-05T09:36:10.000Z",
            "contactgroups": [
            {
                "id": 2,
                "contact":
                {
                    "gsm": "66666"
                }
            },
            {
                "id": 5,
                "contact":
                {
                    "gsm": "54321"
                }
            }],
            "select": true
        },
        {
            "id": 3,
            "groupname": "Vue",
            "createdAt": "2017-12-05T09:36:15.000Z",
            "updatedAt": "2017-12-05T09:36:15.000Z",
            "contactgroups": [
            {
                "id": 6,
                "contact":
                {
                    "gsm": "12345"
                }
            }]
        },
     ],
    "sender": "ifelse",
    "message": "test"
}

我想像上面这样转换对象:

[
    {"gsm": 12345, "sender": "ifelse", "message": "test"},
    {"gsm": 54321, "sender": "ifelse", "message": "test"},
    {"gsm": 99999, "sender": "ifelse", "message": "test"},
    {"gsm": 66666, "sender": "ifelse", "message": "test"},
    {"gsm": 54321, "sender": "ifelse", "message": "test"},
    {"gsm": 12345, "sender": "ifelse", "message": "test"},

]

然后只有我能够批量插入后继。

如何使用for或foreach或任何其他函数执行此操作? 做这个东西?

foreach更好吗? 地图有可能吗?

我想要我的最终json对象,然后仅允许序列化来批量创建。

附:我要“选择”:仅true json gsm数字

就您而言,我正在使用for循环制作JSON对象

  var data={ "groups": [ { "id": 1, "groupname": "Angular", "createdAt": "2017-12-05T09:36:05.000Z", "updatedAt": "2017-12-05T09:36:05.000Z", "contactgroups": [ { "id": 1, "contact": { "gsm": "12345" } }, { "id": 3, "contact": { "gsm": "54321" } }, { "id": 4, "contact": { "gsm": "99999" } }], "select": true }, { "id": 2, "groupname": "React", "createdAt": "2017-12-05T09:36:10.000Z", "updatedAt": "2017-12-05T09:36:10.000Z", "contactgroups": [ { "id": 2, "contact": { "gsm": "66666" } }, { "id": 5, "contact": { "gsm": "54321" } }], "select": true }, { "id": 3, "groupname": "Vue", "createdAt": "2017-12-05T09:36:15.000Z", "updatedAt": "2017-12-05T09:36:15.000Z", "contactgroups": [ { "id": 6, "contact": { "gsm": "12345" } }] }, ], "sender": "ifelse", "message": "test" } var result=[ {"gsm": 12345, "sender": "ifelse", "message": "test"}, {"gsm": 54321, "sender": "ifelse", "message": "test"}, {"gsm": 99999, "sender": "ifelse", "message": "test"}, {"gsm": 66666, "sender": "ifelse", "message": "test"}, {"gsm": 54321, "sender": "ifelse", "message": "test"}, {"gsm": 12345, "sender": "ifelse", "message": "test"}, ] var arr=[]; for(var i=0;i<data.groups.length;i++){ if(data.groups[i].select){ for(var j=0;j<data.groups[i].contactgroups.length;j++){ arr.push({gsm:data.groups[i].contactgroups[j].contact.gsm,sender:data.sender,message:data.message}); } } } console.log(arr); 
   

尝试lodash

var result = _.flatten(data.groups.map( r => r.contactgroups))
              .map(r => ({ gsm: r.contact.gsm, sender: "ifelse", message: "test" })
);

console.log(result);

更新#2-带过滤器

var result = _.flatten(_.filter(data.groups,{'select': true }).map( r => r.contactgroups))
              .map(r => ({ gsm: r.contact.gsm, sender: "ifelse", message: "test" })
);

console.log(result);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM