Sequelize 查询 Or-ing where 和 include 语句

ajp*_*nam 4 javascript sql sequelize.js

我正在尝试进行 Sequelize 查询,该查询仅返回与where 子句匹配或包含wheres 的记录。例如,我有一个属于人员模型的用户模型。用户模型有一个名为 username 的字段,而人员模型有一个名字和姓氏。

示例查询:

{
    "where": {
      "username": {
        "$iLike": "%s%"
      }
    },
    "include": [{
        "model": Person,
        "where": {
            "$or": [{
                "firstName": {
                    "$iLike": "%s%"
                }
            }, {
                "lastName": {
                    "$iLike": "%s%"
                }
            }]
        }
    }]
}
Run Code Online (Sandbox Code Playgroud)

上面的查询匹配用户名 AND(名字或姓氏)匹配“ilike”'s'的记录。我正在尝试实现用户名或(名字或姓氏)。

我知道在 where 内工作时如何使用 Or 运算符,但我想在 where 或 include 上使用 Or 。这可能吗?我使用必需的假吗?

小智 10

尝试这个:

{
where: {
  $or: [
    {
      userName: {
        $ilike: "%s%"
      }
    },
    {
      '$person.firstName$': {
        $ilike: "%s%"
      }
    },
    {
      '$person.lastName$': {
        $ilike: "%s%"
      }
    }
  ]
},
include: [
  {
    model: Person,
  }
]
}
Run Code Online (Sandbox Code Playgroud)

  • 知道如何在具有“hasMany”关系的模型上执行此操作吗?例如,如果有多个人,则此代码将不起作用。这是有效的,因为只有一个人与此用户模型相关联。 (6认同)