2016-06-20 40 views
0

我有一个有2个关联的模型,我想要返回两个关联的模型,但只有满足其中的一个标准的模型。Sequelize - 使用where子句的多个嵌套模型

例如

 models.Users.findAll({ 
      include: [ 
       { 
        model: models.Context, 
        where: { id: req.session.contextObject.id } 
       }, 
       {  
        model: models.Role 
       } 
      ] 
     }).then(function(fullUsers){... 

所以我想返回所有用户,他们上下文角色,但只有上下文相匹配的值我有。

是可以返回多个关联的模型,但其中一个模型的where子句?

只有在包含Context模型的情况下,它才能正常工作。

+0

FYI这几乎工程... \t \t \t models.Users.findAll( { \t \t \t \t包括:[{所有:真}], \t \t \t \t其中:{ 'Contexts.id':req.session.contextObject.id} \t \t \t})然后(函数(fullUsers){ ...但是,而不是WHERE'用户'.'Contexts.id'它需要在哪里'Contexts'.'id' – Jamie

回答

1

如果要通过上下文的ID过滤,你可以在用户模型中使用的上下文的属性引用:

models.Users.findAll({ 
     where : { ContextId : req.session.contextObject.id } 
    , include: [ 
     { 
      model: models.Context   
     }, 
     {  
      model: models.Role 
     } 
    ] 
}).then(function(fullUsers){... 
+0

啊谢谢!我会试试这个,我刚刚拿到了其与原始​​查询工作相反,即:\t \t \t \t包括:[{所有:真正}], \t \t \t \t其中:[”'Contexts'.'id '='+ req.session.contextObject.id] ...但我会尝试,因为它感觉更好 – Jamie