如何在Node.js中更新PostgreSQL中的JSON数据?

4

我的数据结构模式如下:

users(
  id serial primary key,
  data json
);

我想更新data关键字。

我正在使用node-postgres库,到目前为止,我尝试过像这样的代码:

pg.connect(process.env.DATABASE_URL, function(err, client, done) {
    var queryString = "UPDATE users SET data =" + myNewJsonData + " WHERE  id = " + userIdToEdit + ";";
    client.query(queryString, function(err, result) {
        done();
        if (err) {
            res.send("Failed to update user data ");
            throw err;
        } else {
            res.send("Successfully updated user data!! ");
        }
    });
});

这个不起作用,我得到了错误信息无效的输入语法类型JSON

有人可以帮忙吗?谢谢。


你问错了问题。正确的问题应该是:这是完整的“UPDATE”,JSON列周围的语法有什么问题?而且你甚至没有包括“myNewJsonData”是什么。 - vitaly-t
这是因为我对我的方法不是很确定。 - Abhishek
但是你的问题是关于语法问题,而不是方法。严格来说,如果你正确转义所有内容,这种方法是可行的。但那是一个完全不同的问题。 - vitaly-t
啊,你说得对,这是语法问题,我终于解决了。谢谢。 - Abhishek
1个回答

6
所以这是一个语法错误,我只需要将JSON数据转换为字符串并放在引号中即可。
pg.connect(process.env.DATABASE_URL, function(err, client, done) {
var newJsonDataStringyfied = JSON.stringify(myNewJsonData)
var queryString = "UPDATE users SET data = '" + newJsonDataStringyfied + "' WHERE  id = " + userIdToEdit + ";";
    client.query(queryString, function(err, result) {
        done();
        if (err) {
            res.send("Failed to update user data ");
            throw err;
        } else {
            res.send("Successfully updated user data!! ");
        }
    });
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接