我想从数组中插入表值。
var theFields =
"my_id,"+
"fruit,"+...
var theData = [
my_id,
req.body.fruit,...
]
我能做到:
client.query("INSERT INTO theTable("+ theFields +") values($1,$2,$3,$4,$5,$6,$7,$8,$9,...." +
但我想避免“$ 1,$ 2..so on”
所以,我试过了:
client.query("INSERT INTO theTable("+ theFields +") values($1::varchar[])",[theData], function(err, result) {
client.query("INSERT INTO theTable("+ theFields +") values ANY($1::varchar[])",[theData], function(err, result) {
但它们不起作用。
请注意,字段属于同一类型varchar。
(另外,如果我有不同的类型,有没有办法使用像我正在尝试的解决方案来实现这一点?)
答案 0 :(得分:0)
您可以以编程方式编写字符串$1,$2,...
。我假设theData
数组的长度等于查询中字段的数量:
var values = theData.map(function(f, i) {
return "$" + (i + 1);
}).join();
client.query("INSERT INTO theTable(" + theFields + ") values(" + values + ")", ...