Postgresql“类型json的输入语法无效”-有什么想法吗?

时间:2018-06-28 09:54:15

标签: json node.js postgresql syntax-error pg

我使用pg node-postgres软件包为我的项目进行了以下设置:

enter image description here

简单的表“ tmp”如下所示:

enter image description here

根据jsonORGpostgres docs对象:

{"foo" : true}

是语法上有效的JSON,并且在将pgAdmin查询工具与以下命令一起使用时:

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

我在快速路由中尝试了来自postgresql的to_json函数和来自npm的to-json package-都具有相同的否定结果。

我缺少一些基本的了解吗?还是某些格式化/引用问题?

预先感谢您的想法! ;)

ps:是的-我已阅读了thisthat的文章。

1 个答案:

答案 0 :(得分:3)

我有同样的问题。在将其传递到查询之前,请尝试使用JSON.stringify()将JS对象转换为字符串,因为pg并不总是会自动为您完成。

有关更多信息,请参见GitHub上的issue