【问题标题】:How do I update json data in postgres sql in nodejs?如何在节点 js 中更新 postgresql 中的 json 数据?
【发布时间】:2017-09-20 21:26:38
【问题描述】:

我的数据结构模式是这样的

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!! ");
        }
    });
});

这不起作用,我收到错误invalid input syntax for type json

谁能帮忙,谢谢。

【问题讨论】:

  • 你问错问题了。正确的应该是:这是完整的UPDATE,JSON 列周围的语法有什么问题?你甚至不包括myNewJsonData 是什么。
  • 这是因为我不太确定我的方法在这里。
  • 但是您的问题是关于语法问题,而不是方法。严格来说,如果您正确地转义所有内容,该方法将起作用。但这完全是一个单独的问题。
  • 啊,你是对的,这是语法问题,终于可以正常工作了。谢谢

标签: node.js postgresql express


【解决方案1】:

所以这是一个语法错误,我只需要对 json 数据进行 stringfy 并将其放在“引号”中

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!! ");
        }
    });
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-07
    • 2018-02-26
    相关资源
    最近更新 更多