You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Sequelize的include关联查询中添加where条件筛选数据

解决方案

当然可以直接在Sequelize查询语句里实现这个筛选逻辑,不用做后续的二次过滤,直接在数据库层面完成筛选更高效。

你只需要在include的Role模型配置里添加筛选条件,同时通过required: true确保只有匹配角色条件的用户才会被返回:

const users = await User.findAll({
  where: { last_name: 'raj' },
  include: [
    {
      model: Role,
      where: { name: 'admin' }, // 替换成你Role模型中存储角色名称的实际字段
      required: true // 开启内连接,只返回同时满足用户和角色条件的记录
    }
  ]
});

关键说明:

  • include中的where:直接对关联的Role模型设置筛选条件,指定角色为admin。
  • required: true:将默认的左外连接(LEFT JOIN)改为内连接(INNER JOIN),这样只有同时符合last_name='raj'和角色为admin的用户才会被查询出来,不会返回没有匹配对应角色的用户。
  • 如果你的Role模型中存储角色标识的字段不是name(比如是role_type),记得把where里的字段名替换成实际的字段。

内容的提问来源于stack exchange,提问作者Abby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 05:22:11