如何从JSON结构到MySQL列插入多行

问题描述

我需要在MysqL列中插入多个json值。 这里有一个名为client

的表
query = ' INSERT INTO client (user_id,client_id,tenant_id) values ?'
let queryClient = []
queryClient.push(clientData.user_id)
queryClient.push(clientData.client_id);
queryClient.push(clientData.tenant_id);

在此之前,我将req.body分配到clientData

这是到MysqL数据库的连接

var queryMapClientIn = MysqL.format(query,[queryClient])
const newMapClient = await conPool.query(queryMapClientIn,function (err,result) {
  if (err) throw err;
  console.log("Number of records inserted: " + result.affectedRows);
});

这是代码,而json数据是:

{
    "user_id" : 101,"client_id": 999,"tenant_id" : 1,"additionalClient" : [
        {"user_id" : 130},{"user_id" : 131}
    ]
}

这是json数据,我需要将多个user_id推入sql表的user_id列中。我可以知道如何在此表上插入多个user_id

解决方法

您可以创建一个二维数组以插入多行。

let clientData = {
    "user_id" : 101,"client_id": 999,"tenant_id" : 1,"additionalClient" : [
        {"user_id" : 130},{"user_id" : 131}
    ]
};
let queryClient = [[clientData.user_id,clientData.client_id,clientData.tenant_id]];
if (clientData.additionalClient) {
    let additionalClients = clientData.additionalClient.map(({user_id}) => [user_id,clientData.tenant_id]);
    queryClient = queryClient.concat(additionalClients);
}

let query = 'INSERT INTO client (user_id,client_id,tenant_id) values ?';
const newMapClient = await conPool.query(query,queryClient,function (err,result) {
  if (err) throw err;
  console.log("Number of records inserted: " + result.affectedRows);
});