【问题标题】:Sequelize - multiple nested models with where clauseSequelize - 带有 where 子句的多个嵌套模型
【发布时间】:2016-06-21 00:51:03
【问题描述】:

我有一个具有 2 个关联的模型,我想返回具有两个关联的模型,但仅在满足其中一个关联的条件下。

例如

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

所以我想返回所有用户,以及他们的上下文和角色,但仅 strong>上下文 匹配我的值。

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

仅包含上下文模型时,这绝对可以正常工作。

【问题讨论】:

  • 仅供参考,这几乎可以工作... models.Users.findAll({ include: [{all: true}], where: {'Contexts.id': req.session.contextObject.id} } ).then(function(fullUsers){ ...但不是 WHERE Users.Contexts.id 它需要 WHERE Contexts.id

标签: node.js sequelize.js


【解决方案1】:

如果你想通过 Context 的 ID 过滤,你可以在用户模型上使用 Context 的属性引用:

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

【讨论】:

  • 啊,谢谢!我会试试这个,我刚刚让它使用 RAW 查询,即:包括:[{all:true}],其中:['Contexts.id='+req.session.contextObject .id] ...但我也会试试这个,因为感觉更好
猜你喜欢
  • 1970-01-01
  • 2017-08-27
  • 2017-07-26
  • 2021-06-05
  • 1970-01-01
  • 2014-11-07
  • 2012-08-24
  • 2019-07-15
  • 1970-01-01
相关资源
最近更新 更多