【发布时间】:2017-07-25 14:11:06
【问题描述】:
我正在序列化表单并使用 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');
【问题讨论】:
-
不要手动做这件事,这很容易出错。相反,请参阅Multi-row insert with pg-promise。
标签: node.js express node-postgres