使用 Sequelize ORM 创建多个 INNER JOINS

Create multiple INNER JOINS with Sequelize ORM

我将 Sequelize ORM 与 Node.js 一起使用,但我不知道如何使用它构建以下查询。

SELECT service.*, serviceCollection.*, client.companyName, client.idclient 
FROM service 
INNER JOIN serviceCollection 
ON service.serviceCollection_idserviceCollection = serviceCollection.idserviceCollection 
INNER JOIN client 
ON serviceCollection.client_idclient = client.idclient

当我在 phpMyAdmin 上尝试时,此查询有效且运行良好。 复杂的是客户端模型与服务没有直接关系,所以在尝试这样做时:

Service.findAll({include : [ServiceCollection, Client]}).then(function(service){
    if(service) {
        res.status(200).json(service);
    }
});

我收到以下错误:

Unhandled rejection Error: client is not associated to service!

我如何准备查询才能从 serviceCollection 中的外键而不是原始模型中获取客户端信息- 服务。 我不能只在 client 上使用 include 因为它会给我错误,我需要将它与这个查询关联一些其他方式,我似乎无法在文档中找到解决方案。

servicecollection和client之间是否建立了关系?在这种情况下你可以这样做:

Service.findAll({
  include : [
    { 
      model: ServiceCollection, 
      required: true,
      include: [{model: Client, required: true }]}
  ]
});

required: true创建内连接,默认为左连接