Postgresql 'неверный синтаксис ввода для типа json' - есть идеи? - PullRequest
0 голосов
/ 28 июня 2018

У меня есть следующие настройки для моего проекта с использованием пакета pg node-postgres:

enter image description here

Простая таблица 'tmp' выглядит так:

enter image description here

Согласно jsonORG и postgres docs объект:

{"foo" : true}

является синтаксически допустимым JSON, и при использовании pgAdmin Query-tool с:

UPDATE tmp SET data = '{"foo": false}' WHERE id = '1'

работает нормально, но когда я пытаюсь обновить свою таблицу по экспресс-маршруту, используя pg:

router.put('/updateTMP', (req, res) => {
    // I use dummies in this case instead of req.body.someKey for testing purposes
    let dummyJSON = {"foo":true};
    let dummyID = 1;
    pg.query(`UPDATE tmp SET data = '${dummyJSON}' WHERE id = '${dummyID}'`, (errUpdate, responseUpdate) => {
        if (!errUpdate) { // NO ERROR
            res.json({success: true, message: responseUpdate});
        }
        else { // ERROR
            console.log(dummyJSON);
            console.log(errUpdate);
            res.json({success: false, message: errUpdate}); 
        }
    })
})

Я получаю следующую ошибку из базы данных:

error: invalid input syntax for type json

Я пробовал функцию to_json из postgresql и пакет to-json из npm в экспресс-маршруте - все с одинаковым отрицательным результатом.

Мне не хватает фундаментального понимания или это проблема форматирования / цитирования?

Заранее спасибо за ваши идеи! ;)

ps: И да - я прочитал эту и эту статью ..

1 Ответ

0 голосов
/ 09 августа 2018

У меня была такая же проблема. Попробуйте преобразовать ваш объект JS в строку, используя JSON.stringify() перед передачей его в запрос, так как pg не всегда сделает это автоматически.

См. выпуск на GitHub для получения дополнительной информации.

...