【问题标题】:Node js + Postgres, update Json column with SQL queryNode js + Postgres,用 SQL 查询更新 Json 列
【发布时间】:2020-08-13 02:50:41
【问题描述】:

我在点击 POST API 端点时进行数据库查询。该查询需要更新我的networks 表中的Json 列,该表只有3 列(id、name 和json)。我需要用另一个值专门更新 coreEssentials 数组,所以我一直在使用set 'json' = ? SQL 查询,我在整个列中粘贴了我在特定字段中的更改,它可以工作(手动分贝)。唯一的问题是,我需要首先对特定 id 的 json 列进行 SQL 调用 SELECT,(长话短说,但是后端应用程序会在 JSON 中生成一些数据(我需要更新的 coreEssentials 键/对象) ) 然后将其放入数据中,然后在我需要更新之后)。

我在我的 Postgresql GUI (DBbeaver) 中手动执行此操作,我的查询看起来像这样:

update network set "json" = '{
  "uid": "randomUid",
  "etag": "randomEtag",
  "name": "randomNameAgain",
  "state": "PENDING",
  "Type": "ABC",
  "version": 1,
  "dealerId": "random_uuid",
  "Param": {
    "AreaId": 0,
    "AreaIdStr": "0.0.0.0",
    "DeadInterval": 0,
    "HelloInterval": 0
  },
  "networkData": {
    "tic": "311",
    "toe": "980",
    "tac": "201",
    "tac_id": "201",
    "timeZone": null
  },
  "production": false,
  "customerName": "random_name",
  "IPPool": "0.0.0.0/32",
  "customerEmail": "random@email.com",
  "coreEssentials": [ ],
  "deployment": "A"
}'

coreEssentials 一开始是一个空数组,但我需要将其设置为:

[{
                "version": 1,
                "component": "purple",
                "instanceId": "1"
            },
            {
                "version": 1,
                "component": "gray",
                "instanceId": "1"
            },
            {
                "version": 1,
                "component": "blue",
                "instanceId": "1"
            } ]

我正在使用带有 pg-promise (Postgresql) 库的 Node JS 后端。谁能给我建议如何进行此查询?

【问题讨论】:

  • 不清楚为什么不能在序列化 JSON 之前用数组数据设置coreEssentials
  • 这就是我最终做的事情......对不起,我不是 Javascript 开发人员! :(谢谢!

标签: javascript sql node.js json postgresql


【解决方案1】:

我只是将 coreEssentials 数组设置为从第一个 SQL 查询返回的数据对象,如 @vitaly-t 建议的:D

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2016-03-18
    • 1970-01-01
    • 2019-08-13
    • 1970-01-01
    • 2021-10-09
    相关资源
    最近更新 更多