小编Nig*_*ift的帖子

JSONB 数组上的 Sequelize 查询

这是模型和postgres数据库中的 JSONB 数组数据类型:

.
.
.
      MyField: {
        type: DataTypes.ARRAY(DataTypes.JSONB),
        allowNull: false
      }
.
.
.
Run Code Online (Sandbox Code Playgroud)

表字段包含 JSONB 值:

{"{\"LessonId\": \"1\", \"TeacherId\": \"1\"}"}
Run Code Online (Sandbox Code Playgroud)

这是我在sequelize findAll 方法中的where 子句:

      where: {
        MyField: {
          [Op.contains]: [
            {
              TeacherId: '1',
            }
          ]
        }
      }
Run Code Online (Sandbox Code Playgroud)

生成的查询是这样的:

SELECT
    ...
    "MyField",
FROM
    "MyTable" AS "MyTable" 
WHERE
    "MyTable"."MyField" @> ARRAY [ '{"TeacherId":"1"}' ]:: JSONB [];
Run Code Online (Sandbox Code Playgroud)

并且结果集是空的。但当我LessonId也包括在内时,它就会完成我的回答。我发现 postgres 将 jsonb 对象视为字符串文本。根据 JSONB ARRAY 中的特定键进行查询的正确方法是什么?

postgresql sequelize.js jsonb postgresql-11

5
推荐指数
1
解决办法
4588
查看次数

标签 统计

jsonb ×1

postgresql ×1

postgresql-11 ×1

sequelize.js ×1