Javascript 带有数组参数的节点postgres参数化查询
我正试图执行这个PSQL查询来调用一个函数并获取一个ID列表。[此函数在PGAdmin中运行时正常工作,由返回的ID验证。]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
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