使用 Sequelize 查询多个表

Querying over multiple tables with Sequelize

在我的代码中,我有多个 Sequelize(使用 MySQL 作为数据库驱动程序)模型,例如 CarBikeElectronicPart,它们都有一个 name 字段。现在,我正在尝试根据它们的名称为所有这些模型提供搜索栏功能。
因此,例如搜索汽车:

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

有没有办法同时对多个模型执行此操作,而不必导致 运行 并行查询每个模型或生成某种主模型 table?

模型之间没有关联,对吗? Afaik 你不能在同一个 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 将它们连接成一个结果。