【发布时间】:2019-12-11 16:42:55
【问题描述】:
我在 DB 中有一个 JSONB 列。
我想向 DB 提出请求,我可以在其中检查此 JSON 中的某些值是真还是假:
SELECT *
FROM table
WHERE ("json_column"->'data'->>'data2')::boolean = true AND id = '00000000-1111-2222-3333-456789abcdef'
LIMIT 1
所以,我的续集请求:
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 */],
})
【问题讨论】:
标签: javascript node.js postgresql orm sequelize.js