我有一個對象數組,每個對象都有多個屬性。例如:使用準備好的語句插入多行
var obj = [{a : '1', b : '2'},{a : '3', b : '4'}];
爲了匹配數據庫表的順序序列,我生成對於批量插入所需的序列的新的數組。
var bulkInsert = function(arrData){
var orderedData = [];
arrData.forEach(function(obj){
orderedData.push(obj.b + ',' + obj.a);
});
return orderedData;
};
現在,我想大宗物體的輸出陣列插入到Postgres表:
client.query("INSERT INTO sometable(b, a) VALUES" +
" ($1, $2)", [orderedData], function (err, result) {
if (err) {
return handleError(err, client, done);
}
});
然而,這將引發一個錯誤:
error fetching client from pool { [error: bind message supplies 1 parameters, but prepared statement "" requires 2]
串行版本工作正常,如果每個插入的情況都是迭代遍歷一個循環,但是對於較大的陣列來說它將會很慢。
''orderedData''應該是'orderedData',因爲該值已經是一個數組。否則,它需要1個變量而不是2個預期值,因此是錯誤。 –