pg nodejs 包导致“json 类型的输入语法无效”
Posted
技术标签:
【中文标题】pg nodejs 包导致“json 类型的输入语法无效”【英文标题】:pg nodejs package results in 'invalid input syntax for type json' 【发布时间】:2018-12-07 08:35:14 【问题描述】:我的项目有以下设置,使用 pg node-postgres 包:
简单的表 'tmp' 如下所示:
根据jsonORG和postgres 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:是的 - 我已经阅读了 this 和 that 的文章..
【问题讨论】:
即使我尝试将 "":"" 传递给 postgresql 的 to_json() 函数,我也会收到以下错误:'could not determine polymorphic type because input has type "unknown"'.. 【参考方案1】:我遇到了同样的问题。尝试使用 JSON.stringify()
将您的 JS 对象转换为字符串,然后再将其传递给查询,因为 pg 不会总是自动为您执行此操作。
请参阅 GitHub 上的 issue 了解更多信息。
【讨论】:
非常准确的答案,谢谢!以上是关于pg nodejs 包导致“json 类型的输入语法无效”的主要内容,如果未能解决你的问题,请参考以下文章
如何使用nodejs pg-promise库将带有uuid数组的记录插入pg表