Javascript 带有数组参数的节点postgres参数化查询

Javascript 带有数组参数的节点postgres参数化查询,javascript,node.js,postgresql,parameterized-query,node-postgres,Javascript,Node.js,Postgresql,Parameterized Query,Node Postgres,我正试图执行这个PSQL查询来调用一个函数并获取一个ID列表。[此函数在PGAdmin中运行时正常工作,由返回的ID验证。] SELECT get_dataids( 'university', '2015-08-01', '2015-08-02', array ['air1'], 'electricity_egauge_minutes' ); 我正在使用node postgres(),并且一直在使用参数化查询。[此功能在节点后端成功。] var client = new

我正试图执行这个PSQL查询来调用一个函数并获取一个ID列表。[此函数在PGAdmin中运行时正常工作,由返回的ID验证。]

SELECT get_dataids(
  'university',
  '2015-08-01',
  '2015-08-02',
  array ['air1'],
 'electricity_egauge_minutes'
);
我正在使用node postgres(),并且一直在使用参数化查询。[此功能在节点后端成功。]

  var client = new pg.Client(connectionString);
  client.connect();
  return client.query('SELECT ercot.get_live_realtime_lmp($1, $2)',
    ['ercot', 'zone'])
  .then(data => {
    client.end();
    return data.rows;
  })
  .catch(err => {
    client.end();
    console.log('err', err);
  });
这是我尝试运行的实际查询:

  return client.query('SELECT public.get_dataids($1, $2, $3, $4, $5)',
    [
    'university',
    '2015-08-01',
    '2015-08-02',
    ['air1'],
    'electricity_egauge_minutes',
  ])
我原以为可以将数组作为参数传递给函数,但它似乎不起作用(1)没有返回与原始SQL查询相同的ID,2)将任何字符串传递到数组中会返回相同的非ID列表)


我猜问题是专门试图传递一个数组,但我无法找出实际传递数组的准确方式。我尝试了一个空数组,一个带空字符串的数组,传递一个带
'array[“air1”]
的字符串,只传递字符串
'air1'
,等等。其中一个错误返回为:
错误:格式错误的数组文本
,这让我相信这就是我在数组中传递的方式。如有任何建议,将不胜感激。

将您的查询从
SELECT func
更改为
SELECT*from func
。它将正确地返回结果。谢谢您尝试vitaly-t。不幸的是,这并不能解决问题,只能以不同的格式(数组而不是字符串)返回相同的数据。以完全相同的方式调用其他工作函数(不使用
SELECT*
)可以证实这一点。是的,这只是解决方案的一半。另一半-将数组转换为
数组[1,2,3]
格式。基本驱动程序似乎不支持它。但是,它支持更丰富的语法,当然还支持自动生成数组;)啊,很酷,谢谢。我以后会记住这一点。事实证明,我的问题是另一位同事为我编写的数据库函数没有正确完成…:p将查询从
SELECT func
更改为
SELECT*from func
。它将正确地返回结果。谢谢您尝试vitaly-t。不幸的是,这并不能解决问题,只能以不同的格式(数组而不是字符串)返回相同的数据。以完全相同的方式调用其他工作函数(不使用
SELECT*
)可以证实这一点。是的,这只是解决方案的一半。另一半-将数组转换为
数组[1,2,3]
格式。基本驱动程序似乎不支持它。但是,它支持更丰富的语法,当然还支持自动生成数组;)啊,很酷,谢谢。我以后会记住这一点。事实证明,我的问题是另一位同事为我编写的数据库函数没有正确完成…:P