【问题标题】:Insert/update JSON into Postgresql column WHERE myvar = myval将 JSON 插入/更新到 Postgresql 列 WHERE myvar = myval
【发布时间】:2016-02-23 01:01:59
【问题描述】:

我正在尝试将 JSON 插入数据类型为 JSON 的 Postgresql 列中,但我无法找到如何执行此操作。据我所知,这是不正确的,因为它只是每次都覆盖它,而不是添加一个新的密钥对。

我正在使用 pg-promise 节点模块来执行这些查询。这是我目前所拥有的:

db.query("UPDATE meditation_database SET completed=$1 WHERE user_id=$2", [{myVar : true}, user_id]);

'myVar' 也应该更新为变量值,而是将其视为字符串。我怎样才能得到 'myVar' 的实际值,而不是按字面意思对待它。

谢谢,

【问题讨论】:

  • 对于最后一部分,使用变量$1^ 而不是$1 将按原样处理,不进行格式化(参见raw-text variables)。但是 PostgreSQL 需要一个字符串。不过更新 JSON 是另一个问题。

标签: json node.js postgresql pg-promise


【解决方案1】:

我正在尝试将 JSON 插入数据类型为 JSON 的 Postgresql 列中,但我无法找到如何执行此操作。

通过执行这个:

db.query("INSERT INTO meditation_database(completed, user_id) VALUES($1, $2)", 
          [{myVar : true}, user_id]);

'myVar' 也应更新为变量值,但它会将其视为字符串。我怎样才能得到 'myVar' 的实际值,而不是按字面意思对待它。

myVar 被序列化为 JSON 作为字符串,这是属性名称的正确 JSON 格式,也是 PostgreSQL 将接受的唯一格式。

据我所知,这是不正确的,因为它每次都会覆盖它,而不是添加新的密钥对。

如果你问如何在 PostgreSQL 中更新 JSON,这个问题之前已经回答过,而且非常详细:How do I modify fields inside the new PostgreSQL JSON datatype?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-20
    • 1970-01-01
    • 1970-01-01
    • 2020-06-05
    • 2016-05-06
    • 1970-01-01
    • 2021-10-16
    • 1970-01-01
    相关资源
    最近更新 更多