【问题标题】:PostgreSQL - WHERE id IN(array) returns error: invalid input syntax for type integer:PostgreSQL - WHERE id IN(array) 返回错误:整数类型的输入语法无效:
【发布时间】:2021-03-05 10:06:28
【问题描述】:

我在nodejs 中使用pg。我有一个简单的查询:

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 更新多行的其他方法,但我一直在寻找有关如何更新数据库中的数组而不是根据数组中的数字列表更新行的文章。

我非常感谢任何设法解决此问题的人的回复。

【问题讨论】:

    标签: javascript arrays postgresql pg


    【解决方案1】:

    改用""

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

    【讨论】:

    • 感谢您的回复。我刚才试过了。它会给我同样的错误。
    猜你喜欢
    • 1970-01-01
    • 2018-09-29
    • 1970-01-01
    • 2020-02-29
    • 1970-01-01
    • 2023-01-26
    • 2021-07-05
    • 1970-01-01
    • 2012-11-09
    相关资源
    最近更新 更多