Я сериализую форму и отправляю с помощью jQuery AJAX данные на экспресс-маршрут:
Объект, отправленный как arrobj
, например:
{
col1: [ 'one', 'two', 'three' ],
col2: [ 'foo', 'bar', 'baz' ]
}
В маршруте у меня есть функция, которая создает параметризованную строку запроса следующим образом:
function create_insert_SQL(obj, table, returnid) {
// Loop through OBJ and extract column names
var cols = ''; // Store column names
var params = ''; // Store Parameter references eg. $1, $2 etc
var count = 1;
for(var p in obj) {
cols += p + ",";
params += "$" + count + ",";
count++;
};
var strSQL = "INSERT INTO " + table + " (";
strSQL += cols.substr(0, cols.length - 1);
strSQL += ') VALUES (';
strSQL += params.substr(0, params.length - 1)
strSQL += ') returning ' + returnid + ' as id';
return strSQL;
}
Это вернет insert into mytable (col1,col2) values ($1, $2);
После создания строки запроса я запускаю запрос на вставку в node-postgres, передавая объект:
db.query(SQL, arrobj, function (err, result) {
if (err) {
res.send(err)
} else {
res.send(result.rows[0].id.toString()) // return the inserted value
}
});
Для одиночных значений в каждом ключе все работает нормально и данные вставляются в таблицу корректно.
Как я могу запустить запрос на вставку для каждого значения ключей?
Пример:
insert into table (col1, col2) values ('one', 'foo');
insert into table (col1, col2) values ('two', 'bar');
insert into table (col1, col2) values ('three', 'baz');