使用Sequelize对多个表进行查询



在我的代码中,我有多个Sequelize(使用MySQL作为db驱动程序)模型,如Car,Bike,ElectronicPart,都有一个name字段。现在我试着为所有这些模型提供一个搜索栏功能,基于它们的名字。
例如搜索Cars:

Car.findAll({ where: { name: '%search_query%' } })

是否有一种方法可以同时为多个模型执行此操作,而不必为每个模型并行运行查询或生成某种类型的主表?

模型之间没有关联,对吗?您可能无法在同一个findAll方法中查询多个模型。您需要为它编写自己的SQL查询:

const { QueryTypes } = require('sequelize')
const results = await sequelize.query('SELECT * FROM Car WHERE name LIKE :search UNION SELECT * FROM Bike WHERE name LIKE :search ... (Other models)',
{ 
replacements: {search: req.query.search}, 
type: QueryTypes.SELECT 
}
)

SQL sytnax可能是不正确的,因为我不经常使用它,但理论上你应该能够查询所有你想要的表,并使用UNION将它们连接到一个结果。

最新更新