Я делаю запрос БД при попадании в конечную точку 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). Кто-нибудь может дать мне совет, как сделать этот запрос?