【发布时间】:2019-02-05 01:55:11
【问题描述】:
我似乎在将数组传递给我的查询并使用IN 条件时遇到问题,当我手动将每个搜索词添加到查询中时,我可以成功返回结果
async function getFixtures() {
let response;
try {
response = await pool.query("SELECT * FROM fixtures WHERE league_name IN ('Chinese Super League', 'Iran Pro League', 'English Premier League')");
} catch (e) {
console.error('Error Occurred', e);
}
return response.rows;
}
当我尝试传递一个数组时,虽然我没有得到任何结果
async function getFixtures(leaguesArray) {
let response;
try {
response = await pool.query("SELECT * FROM fixtures WHERE league_name IN ($1)", [leaguesArray]);
} catch (e) {
console.error('Error Occurred', e);
}
return response.rows;
}
当我退出 leaguesArray 时它会返回
['Chinese Super League', 'Iran Pro League', 'English Premier League']
所以当它被传递给查询时,我认为它是
[['Chinese Super League', 'Iran Pro League', 'English Premier League']]
我需要将初始数组转换为字符串吗?
我显然在这里遗漏了一些东西,但不确定是什么
谢谢
【问题讨论】:
-
您确定
("SELECT * FROM fixtures WHERE league_name IN ($1)", [leaguesArray])有效吗?我的意思是 - 你确定它用查询中的那个数组替换了 $1 吗? -
看看下面的GitHub FAQ,我认为这正是你的问题。
-
感谢@RamizWachtler,所有已排序,
= ANY ($1)
标签: node.js postgresql