javascript - 在 mysql Sequelize + Nodejs 中将数组和对象转换为批量插入

标签 javascript mysql arrays node.js sequelize.js

这是我的 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"},

]

然后只有我可以在 sequelize 中批量插入。

如何使用 for 或 foreach 或任何其他函数来做到这一点?做这些事?

foreach 更好吗?可以用 map 做吗?

我想要我的最终 json 对象,然后只允许批量创建 sequelize。

Ps: 我想要“select”: true json gsm numbers only

最佳答案

在你的例子中,我使用 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);
   

关于javascript - 在 mysql Sequelize + Nodejs 中将数组和对象转换为批量插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47688682/

相关文章:

javascript - 如何获取引用中的引用文本?

php - 在表超链接中创建回显结果后

javascript - 无法弄清楚如何将零添加到增量函数

sql - Ruby on Rails - 迁移、唯一列和索引(使用数组)

javascript - Angular Select 初始值未选择

javascript - 如何获取在下一个动态创建的 td 文本框中具有相同值的复选框的计数?

javascript - 解析具有不同日期格式的日期字符串

php - Laravel ORM 问题

php - 选择所有不在另一个表 laravel 5.5 中的列

c++ - 数组大小限制