NodeJS中的Sequelize:内部JOIN实现失败

时间:2014-04-29 09:41:44

标签: mysql node.js join orm sequelize.js

我有三个表承包商,项目和连接表这两个是projects_contractors我创建了模型并写了如下的关系,

    Contractor.hasMany(Project, {joinTableName: 'projects_contractors'})
    Project.hasMany(Contractor, {joinTableName: 'projects_contractors'})

我想访问这个基于承包商的项目意味着内部加入。

核心查询:                  选择c.id,c.name,p.id,p.name来自承包商c内联接projects_contractors pc on c.id = pc.contractor_id内联接项目p on p.id = pc.project_id

我在实现以下代码时失败了。 “required”是一个用于内部JOIN的关键字,但如果我们保留则不起作用。

     Contractor.findAll({ include: [Project, {required: false}]}).success(function(list){
       console.log("hi")
         res.send(204)
     })

如果不需要,它将在项目和承包商上创建一个左外部JOIN。建议我上面的senario示例。

1 个答案:

答案 0 :(得分:22)

正确的语法是:

Contractor.findAll({ include: [{model: Project, required: true}]})

通常,include params既可以是模型,也可以是带有模型参数的对象,可选择为/ required / include / where params。