javascript - 在 where 条件下使用 "续行包装列

标签 javascript node.js postgresql orm sequelize.js

我在数据库中有一个 JSONB 列。

我想向 DB 提出请求,我可以在其中检查此 JSON 中的某些值是真还是假:

SELECT *
FROM table
WHERE ("json_column"->'data'->>'data2')::boolean = true AND id = '00000000-1111-2222-3333-456789abcdef'
LIMIT 1

所以,我的 Sequelize 请求:
const someVariableWithColumnName = 'data2';
Model.findOne({
  where: {
    [`$("json_column"->'data'->>'${someVariableWithColumnName}')::boolean$`]: true,
    id: someIdVariable,
  },
  order: [/* some order, doesn't matter */],
})

并且 sequelize 产生不好的结果,例如:
SELECT *
FROM table
WHERE "(json_column"."->'data'->>'data2')::boolean" = true AND id = '00000000-1111-2222-3333-456789abcdef'
LIMIT 1

. 拆分我的列并将 " 添加到每个元素。

知道如何摆脱在 where 条件下向列添加 " 吗?

编辑:
这是我对 sequelize.literal() 的查询:
const someVariableWithColumnName = 'data2';
    Model.findOne({
      where: {
        [sequelize.literal(`$("json_column"->'data'->>'${someVariableWithColumnName}')::boolean$`)]: true,
        id: someIdVariable,
      },
      order: [/* some order, doesn't matter */],
    })

最佳答案

您可以使用 Sequelize.literal() 来避免伪引号。恕我直言,将 json 处理包装在 db 函数中也可能会有所帮助。

关于javascript - 在 where 条件下使用 "续行包装列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59290407/

相关文章:

javascript - 为什么更新一个对象中的属性会更改另一个对象?

javascript - 在 cookie 中存储大型数组有什么主要好处/后果吗

javascript - 当我在提交按钮级别停止传播时,为什么会触发表单提交事件?

python - 在 Openshift 上使用 node-gyp 构建模块

node.js - ionicframework导入模块,变量始终未定义

javascript - 如何在 mongodb 中使用 $nin 运算符从集合中获取文档

javascript - 无法查看 JSON 数据

sql - 如何列出 postgres 模式中的关系

asp.net - 连接到 PostgreSql 的 Web 服务

python - 使用 PostgreSQL 在 SQLAlchemy 测试中回滚数据库事务