【发布时间】:2019-11-29 15:59:37
【问题描述】:
这是模型和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 中的特定键进行查询的正确方法是什么?
【问题讨论】:
-
你能解决这个问题吗?
-
@NightShift 你是怎么解决这个问题的?
标签: postgresql sequelize.js jsonb postgresql-11