javascript - 使用 Sequelize ORM 创建多个 INNER JOINS

标签 javascript mysql node.js sequelize.js

我正在将 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 中的外键获取客户端信息,而不是从原始模型 - service 。 我不能只在 client 上使用 include 因为它会给我错误,我需要以其他方式将它与此查询相关联并且我似乎无法在文档中找到解决方案。

最佳答案

你有没有在servicecollection和client之间建立关系?在这种情况下,您可以这样做:

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

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

关于javascript - 使用 Sequelize ORM 创建多个 INNER JOINS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31983885/

相关文章:

mysql - 删除重复行并合并单元格值mysql

node.js - Multer 将文件上传到对象数组中

javascript - 我可以让出子进程并在 Node.js 中返回响应吗?

node.js - Node.js CPU 分析

javascript - 移动设备方向变化的 Ember Action

mysql - SQL 考试规范化问题

javascript - 设置日期变量的格式

sql - EXPLAIN 和 COUNT 返回两个不同的值

javascript - 如何根据关键条件通过两个键对对象进行排序

javascript - 如何隐藏使用 PhantomJS 创建 PDF 的链接 URL?