Sequelize 包含嵌套列:“where 子句”中的未知列

Aza*_*aev 8 javascript mysql node.js sequelize.js

我正在尝试使用 Sequelize ORM 的功能,该功能允许从包含的模型中引用嵌套列(请参阅Sequelize 文档:顶层的复杂 where 子句)。在文档中它指出,我可以使用$nested.column$语法。

以下是我试图做的:

let where = { memberId };
if (req.query.search) {
  const like = { [Op.like]: `%${req.query.search}%` };
  where = {
    ...where,
    [Op.or]: [
      { '$bookItem.serial$': like },
      { '$bookItem.book.name$': like },
      { '$bookItem.book.ISBNCode$': like },
    ],
  };
}

const options = {
  where,
  include: [
    {
      model: models.BookItem,
      as: 'bookItem',
      required: false,
      include: [
        {
          model: models.Book,
          as: 'book',
          attributes,
          required: false,
        },
      ],
    },
  ],
});

const transactions = await models.Borrow.findAll(options);
Run Code Online (Sandbox Code Playgroud)

但是,对于上面的代码,我收到以下错误:

"Unknown column 'bookItem.serial' in 'where clause'"

我错过了什么?

完整的数据库架构:https : //dbdiagram.io/d/5e08b6aaedf08a25543f79cb

小智 0

在链接的文档书籍中没有名称列,请更改$bookItem.book.name$$bookItem.book.title$,并尝试right: true在下面添加required: false以创建内部联接。