【问题标题】:pg nodejs package results in 'invalid input syntax for type json'pg nodejs 包导致“json 类型的输入语法无效”
【发布时间】:2018-12-07 08:35:14
【问题描述】:

我的项目有以下设置,使用 pg node-postgres 包:

简单的表 'tmp' 如下所示:

根据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 的文章..

【问题讨论】:

  • 即使我尝试将 {"":""} 传递给 postgresql 的 to_json() 函数,我也会收到以下错误:'could not determine polymorphic type because input has type "unknown"'..

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


【解决方案1】:

我遇到了同样的问题。尝试使用 JSON.stringify() 将您的 JS 对象转换为字符串,然后再将其传递给查询,因为 pg 不会总是自动为您执行此操作。

请参阅 GitHub 上的 issue 了解更多信息。

【讨论】:

  • 非常准确的答案,谢谢!
猜你喜欢
  • 2020-02-29
  • 1970-01-01
  • 2019-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-04
  • 2023-01-15
相关资源
最近更新 更多