Node js + Postgres, обновить Json столбец с запросом SQL - PullRequest
0 голосов
/ 29 апреля 2020

Я делаю запрос БД при попадании в конечную точку API POST. Запрос должен обновить столбец Json в моей таблице networks, которая имеет только 3 столбца (id, name и json). Мне нужно специально обновить массив coreEssentials другим значением, поэтому я использую запрос set 'json' = ? SQL, где я вставляю весь столбец с моими изменениями в поле Speci c, и оно работает (вручную в БД). Единственные проблемы заключаются в том, что мне нужно сначала сделать SQL вызов SELECT столбца json для указанного идентификатора c id (длинная история, но бэкэнд-приложение генерирует некоторые данные в 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"
            } ]

Я использую Node JS бэкэнд с библиотекой pg-promise (Postgresql). Кто-нибудь может дать мне совет, как сделать этот запрос?

1 Ответ

0 голосов
/ 01 мая 2020

Я просто установил в массиве coreEssentials объект данных, возвращаемый из первого SQL запроса, как предложил @ vitaly-t: D

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...