从pg-promise获得的结果与在带有数组的IN上直接获得SQL的结果不同

问题描述 投票:0回答:1

我的pg-promise查询(传入数组中的2个ID):

db.any(`SELECT * FROM users WHERE user_id IN ($1:csv)`, team.member_ids)

将查询和参数的控制台输出传递给pg-promise:

SELECT * FROM users WHERE user_id IN ($1:csv) [ 1, 2 ]
//Fails one row returned, two expected

但是我只得到一个结果。如果我在psql中运行以下查询,则会得到两个结果:

select * from users where user_id IN (1,2);
//Works successfully with two rows returned

感谢您的任何帮助!

pg-promise
1个回答
0
投票

这在Query Formatting中进行了解释,一个值与数组如何改变值的解释。

db.any(`SELECT * FROM users WHERE user_id IN ($1:csv)`, team.member_ids)

因为您直接传递值本身,所以$1引用该数组中的第一个元素。要使$1引用整个值数组,该值本身必须在数组内部:

db.any(`SELECT * FROM users WHERE user_id IN ($1:csv)`, [team.member_ids])
© www.soinside.com 2019 - 2024. All rights reserved.