繁体   English   中英

将数组传递给函数-PG和NodeJS

[英]Pass array to function - PG and NodeJS

我想在NodeJS应用程序中使用pg ,希望能够将数组传递给函数,以便可以将IN语句用作查询的一部分

async function myMethod(array) {
  // array looks like [ '83', '82', '54', '55', '79' ] for example
  let response;
  try {
    response = await pool.query("SELECT * FROM fixtures WHERE id IN($1)", [array]);
  } catch (e) {
    console.log(e);
  }
  return response.rows;
}

我得到一个错误

{ error: invalid input syntax for integer: "{"83","82","54","55","79"}"

我如何在这里构建查询结构?

最好的选择是:

pool.query("SELECT * FROM fixtures WHERE id IN($1:list)", [array]);
// [1,2,3]→"SELECT * FROM fixtures WHERE id IN(1,2,3)"

当变量以:list结尾时,其格式设置为逗号分隔值的列表,每个值均根据其JavaScript类型设置格式。

您需要这样做的原因是,默认情况下将数组格式化为PostgreSQL数组,这用大括号表示。


注意:这是在v7.5.1中添加到pg (或更确切地说是pg-promise )的。 如果您使用的是早期版本,请改用$1:csv


资料来源pg-promise#csv-filter

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM