PostgreSQL - WHERE id IN(array)返回错误:integer类型的输入语法无效



我正在使用pgnodejs。我有一个简单的查询:

const processedAlerts = [
180, 186, 192, 198,
204, 210, 216, 222,
228, 234, 240, 246,
258]
response = await pool.query(`UPDATE alert_notification SET emailed = true WHERE id IN($1)`,[processedAlerts]);

我得到以下错误:error: invalid input syntax for type integer: "{"180","186","192","198","204","210","216","222","228","234","240","246","258"}"

当我将数组中的相同数字复制粘贴到查询的IN()部分时,如下所示:

response = await pool.query(`UPDATE alert_notification SET emailed = true WHERE id IN(180, 186, 192, 198,
204, 210, 216, 222,
228, 234, 240, 246,
258)`);

一切正常运行。

我已经检查并确保通过映射到数组上的项目被识别为数字(基于错误-抱怨它们不是整数)。

我已经尝试了许多方法,将其转换为字符串,以摆脱"围绕数字。当然,这将不再工作,因为它将是一个字符串。

我也尝试过映射数字和parseInt()每一个。我知道没有希望,因为数字本身就是数字,这只会给我同样的结果。但我没有看到我有什么其他的选择,我有转换到数字列表?

我已经搜索了关于如何根据数组中的id更新多行的其他方法,但我一直在寻找有关如何在DB中更新数组而不是基于数组中的数字列表的行的文章。

我真的很感谢任何人的任何回复,设法解决这个问题。

""代替

response = await pool.query("UPDATE alert_notification SET emailed = true WHERE id IN($1)",[processedAlerts]);

相关内容

最新更新