postgresql - 对 JSONB 数组进行 Sequelize 查询
问题描述
这是模型和postgres
数据库中的 JSONB 数组数据类型:
.
.
.
MyField: {
type: DataTypes.ARRAY(DataTypes.JSONB),
allowNull: false
}
.
.
.
表字段包含 JSONB 值:
{"{\"LessonId\": \"1\", \"TeacherId\": \"1\"}"}
这是我在 sequelize findAll 方法中的 where 子句:
where: {
MyField: {
[Op.contains]: [
{
TeacherId: '1',
}
]
}
}
生成的查询是这样的:
SELECT
...
"MyField",
FROM
"MyTable" AS "MyTable"
WHERE
"MyTable"."MyField" @> ARRAY [ '{"TeacherId":"1"}' ]:: JSONB [];
结果集为空。但是当我也包括在内时LessonId
,它会做我的回答。我发现 postgres 将 jsonb 对象视为字符串文本。根据 JSONB ARRAY 中的特定键进行查询的正确方法是什么?
解决方案
您的基于类型的字段ARRAY
和您尝试实现的操作仅在JSONB
字段类型中受支持。您可以简单地将模型属性定义为JSONB
,您仍然可以将 JSON 数组存储在其中并运行包含操作
推荐阅读
- python-3.x - 如何在不同的 Flask 端点调用之间保持状态?
- python - 使用 Python 自动化文件读取和函数应用
- java - android颜色无法正确显示
- angular - 激活按钮
- java - 如何使用 selenium 处理 Firefox 的允许位置访问警报?
- tizen - Tizen 可穿戴更新模式
- python-3.x - Python - 比较导入的值
- g1gc - g1 GC基于什么算法来调整Eden区域的大小
- javascript - CSS 和 HTML:Apple Phone 像图像的 3D 浮动效果
- java - 了解调用了 RESTful API 的页面