有没有办法在sequelize中连接没有使用 include
定义的关联的表?这不是this的重复 . 我说的是根本没有关联但有我要加入的列的表 .
例:
select * from bank
left outer join account
on account.bank_name = bank.name
无论是否存在适用指定约束的 account
记录,上述查询都将返回表 bank
中的所有记录 .
在sequelize中,如果模型 bank
和 account
与 account.bank_name = bank.name
关联,则看起来类似于以下内容:
bank.findAll({
include: [{
model: account,
required: false,
}]
})
但是,如果模型没有关联怎么办?有没有办法编写我自己的自定义 on
部分或等效的:
bank.findAll({
include: [{
model: account,
required: false,
on: {
bank_name: Sequelize.col('bank.name')
}
}]
})
我依稀记得读过一些关于此的内容,但我现在似乎无法在任何地方找到该文档 . 如果您可以指向文档中的正确部分,将不胜感激 .
1 回答
似乎虽然可以定义自定义
on
条件,但是如果没有首先定义associations,则不可能include
关系 . findAll方法的文档措辞(在页面上搜索options.include
)暗示了这一点:options.include[].on
上的文档更简洁:我最终使用Postgres视图作为解决方法解决了我的问题 . 也可以注入raw query并绕过续集限制,但我只会将其用作开发/原型设计黑客,并在 生产环境 中提出更强大/更安全的东西;像视图或存储过程之类的东西 .