Как вставить несколько строк из структуры JSON в столбец MySQL

#javascript #mysql #node.js #json #node-mysql

#javascript #mysql #node.js #json #узел-mysql

Вопрос:

Мне нужно вставить несколько значений json в столбец mysql. Здесь у меня есть таблица с именем 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 строк в user_id столбец в таблице sql. Могу ли я узнать, как вставить несколько user_id строк в эту таблицу.

Ответ №1:

Вы можете создать 2-мерный массив для вставки нескольких строк.

 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.client_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);
});
  

Комментарии:

1. Отображаемая карта map не определена и не может прочитать свойство. Могу ли я узнать, для чего здесь используется map

2. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…

3. Это означает, что нет clientData.additionalClient такого свойства, как вы показали.

4. Прочитайте это внимательно. В нем не говорится, что map не определено, в нем говорится, что clientData.additionalClient это не определено, поскольку это то, к свойству чего мы пытаемся получить доступ map .

5. additional_client != additionalClient