我的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
感谢您的任何帮助!
这在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])