【问题标题】:Getting and saving data to Postgres JSON field获取数据并将其保存到 Postgres JSON 字段
【发布时间】:2021-11-24 00:42:53
【问题描述】:

我在 PostgresSQL DB 中有下表:

CREATE TABLE unit(
   id SERIAL PRIMARY KEY,
   unit_capabilities JSON,
);

我有以下插入查询:

INSERT INTO unit (unit_capabilities)
VALUES ('[{"type": "din", "on": 1, "off": 2}, {"type": "dou", "on": 3, "off": 4}]');

我正在使用带有“pg”包的 NodeJS 来查询该数据,但它们以以下格式返回:

[{"type":"din","on":1,"off":2},{"type":"dou","on":3,"off":4}]

我无法将其解析为 JSON 对象。我收到以下错误:

error: invalid input syntax for type json

我将如何进行这项工作?使用我的设置(NodeJS 和 PG 包)从 PostgreSQL JSON 字段存储和检索数据的最佳方式是什么?

感谢您的热心帮助。

【问题讨论】:

  • insert 中的列名与表定义中的列名不匹配,idunit_idinsert 中的数据类型也与表列不匹配,您试图将 textuuid 放入 serial 列。 pg 包裹应该 handle parsing json 在前往数据库并返回给您的途中
  • @Zegarek 抱歉,这是我尝试简化示例时的拼写错误。我已经解决了这个问题。我正在检索这些数据并将它们记录下来,这就是我得到的。
  • 您将获得与 JSON 没有任何关系的 HTML 实体。一定有其他事情发生。
  • @ÁlvaroGonzález 谢谢,你是对的,还有其他事情正在发生。我正在使用一个快速验证器来转义所有 HTML 实体。这样一个愚蠢的错误让我特别是我不是第一次这样做。

标签: node.js postgresql pg


【解决方案1】:

我对所有相关人员感到非常抱歉。我意识到这是因为我使用了具有以下设置的快速验证器:

  check('unit_capabilities').trim().escape().exists()

如上所述,这会转义所有 HTML 实体,感谢@Álvaro González 指出这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-11
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-24
    • 2023-03-20
    • 2022-01-25
    相关资源
    最近更新 更多