我使用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-都具有相同的否定结果。
我缺少一些基本的了解吗?还是某些格式化/引用问题?
预先感谢您的想法! ;)
答案 0 :(得分:3)
我有同样的问题。在将其传递到查询之前,请尝试使用JSON.stringify()
将JS对象转换为字符串,因为pg并不总是会自动为您完成。
有关更多信息,请参见GitHub上的issue。