2017-02-02 2 views
2

У меня 2 массивов в узле кода расслоение плотнойвставить несколько строк, имеющих 2 колонки в nodejs

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

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

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

var sql = "Insert IGNORE into lu (Name) VALUES ?"; 
con.query(sql,[array1],function(err, result){ 
    if (err){ 
     con.rollback(function(){ 
      throw err; 
     }); 
    } 
}); 
+0

Можете ли вы опубликовать структуру массива 1 – Assen

+0

Структура «array1» точно такая же, как и «names» array – vivekm91

+0

Почему просто не перечислить «имена» и «хеши» в один массив? [[«Name1», «hash1» ], ...] '? – Saka7

ответ

1

Вы можете просто карта 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; 
    }); 
    } 
}); 

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

Смежные вопросы