从数组插入表值

时间:2016-05-18 16:14:51

标签: javascript node.js database postgresql

我想从数组中插入表值。

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。

(另外,如果我有不同的类型,有没有办法使用像我正在尝试的解决方案来实现这一点?)

1 个答案:

答案 0 :(得分:0)

您可以以编程方式编写字符串$1,$2,...。我假设theData数组的长度等于查询中字段的数量:

var values = theData.map(function(f, i) {
    return "$" + (i + 1);
}).join();
client.query("INSERT INTO theTable(" + theFields + ")  values(" + values + ")", ...