У меня есть столбец JSONB в БД.
Я хотел бы получить запрос к БД, где я могу проверить, является ли какое-либо значение в этом 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 */],
})
И сиквелизат генерирует неверный результат, например:
SELECT *
FROM table
WHERE "(json_column"."->'data'->>'data2')::boolean" = true AND id = '00000000-1111-2222-3333-456789abcdef'
LIMIT 1
Разделить мой столбец на .
и добавить "
к каждому элементу.
Любая идея, как избавиться от добавления "
в столбец, где условие?
Редактировать: Вот мой запрос с sequelize.literal()
:
const someVariableWithColumnName = 'data2';
Model.findOne({
where: {
[sequelize.literal(`$("json_column"->'data'->>'${someVariableWithColumnName}')::boolean$`)]: true,
id: someIdVariable,
},
order: [/* some order, doesn't matter */],
})