2016-06-20 55 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