Sequelize:OR 查询 2 个或更多 table 个关系

Sequelize: OR query across 2 or more table relations

我正在查看这个 Whosebug 解决方案:

我尝试复制该解决方案,但如果包含超过 1 个模型,我会收到错误消息。

missing FROM-clause entry for table "files"

Tables:

Table关系:

文档查询:

where = {
    [Op.or]: [
      {
        '$files.name$': {
            [Op.iLike]: `%${$search.like}%`,
        },
    },
    {
        documentName: {
            [Op.iLike]: `%${$search.like}%`,
        },
    },
    {
        '$users.name$': {
            [Op.iLike]: `%${$search.like}%`,
        },
    },
   ],
  };

任何人都可以 assist/provide 关于如何跨 2 个或更多 table 关系进行 OR 查询的建议吗?

根据@Anatoly 在评论中的回答,解决这个问题的方法是添加 subQuery: false,即

context.params.sequelize = {
    raw: false,
    subQuery: false,
    include: [
        {
            model: files,
        },
        {
            model: users,
        },
    ],
};

"subQuery: false 表示使用 JOIN/LEFT JOIN 表本身而不是从这些表构造的连接子查询"

只需将 subQuery: false 选项添加到您的 sequelize 查询中,如下所示:

const where = // here is a where condition
const documents = await db.documents.findAll({
  subQuery: false,
  where
})

subQuery: false 表示使用 JOIN/LEFT JOIN 表本身而不是从这些表构造的连接子查询