Вопрос:

вставить несколько строк, имеющих 2 столбца в nodejs

mysql node.js windows

482 просмотра

1 ответ

12 Репутация автора

У меня есть 2 массива в коде узла JS

names = ['Name1','Name2','Name3','Name4', ...500 more items]
hashes = ['hash1','hash2','hash3','hash4', ...500 more items]  

У меня есть 2 столбца в таблице базы данных, а именно: «Имя» и «Хэш». Я хочу вставить имя и хэш-значения в несколько строк одновременно, используя только одну инструкцию mysql.

Я пытался сделать это с одним массивом. Он успешно выполнен, но не работает с 2 массивами. Как мне это сделать ?
Запрос на вставку Mysql, который я написал для одного массива, показан ниже:

var sql = "Insert IGNORE into lu (Name) VALUES ?";
con.query(sql,[array1],function(err, result){
    if (err){
        con.rollback(function(){
            throw err;
        });
    }
});
Автор: vivekm91 Источник Размещён: 02.02.2017 07:00

Ответы (1)


1 плюс

2059 Репутация автора

Решение

Вы можете просто отобразить namesи hashesв один массив - [["Name1", "hash1"], ...], а затем вставить вложенный массив элементов.

var sql = "INSERT IGNORE INTO lu(Name, hash) VALUES ?";

var names = ['Name1','Name2','Name3','Name4'];
var hashes = ['hash1','hash2','hash3','hash4'];

var toOneArray = function(names, hashes) {
  return names.map(function(name, i) {
    return [name, hashes[i]]
  });
}

con.query(sql, [toOneArray(names, hashes)], function(err, result) {
  if (err) {
    con.rollback(function(){
      throw err;
    });
  }
});

Я не знаю, есть ли другой способ.

Автор: Ihor Sakaylyuk Размещён: 02.02.2017 05:37
Вопросы из категории :
32x32