使用 node-postgres select 和 IN 子句的正确方法

Correct way of using node-postgres select with IN clause

提问人:ArthurJ 提问时间:9/28/2021 更新时间:9/28/2021 访问量:2632

问:

我正在尝试如何使用 node-postgres 将逗号分隔的值字符串传递到 postgres select in 子句查询中,但不幸的是,它似乎无法正常工作,也找不到任何示例。

我有以下代码:

function getUser() {
  let inList = "'qwerty', 'qaz'";

  const result = await pgPool.query("SELECT name FROM my_table WHERE info IN ($1)", [inList]);  
  if (result.rowCount == 1) return result.rows.map(row => row.name)
  return false
}

基本上希望最终结果查询进行处理:

SELECT name FROM my_table WHERE info IN ('qwerty', 'qaz')

不确定这是否真的是使用 pgPool 执行此操作的正确方法?

节点.js PostgreSQL Express 节点-Postgres

评论


答:

5赞 Clemb8 9/28/2021 #1

正确的方法是在 Github 上的常见问题解答中 --> https://github.com/brianc/node-postgres/wiki/FAQ#11-how-do-i-build-a-where-foo-in--query-to-find-rows-matching-an-array-of-values

你应该能够这样做:

 pgPool.query("SELECT name FROM my_table WHERE info = ANY ($1)", [jsArray], ...);