首页 > 解决方案 > 在 Sequelize NodeJS 中多次在同一字段上连接表的条件?

问题描述

我有一张名为“用户”的表。一个用户可以出现在多个电子邮件组中。

用户表
ID、名称
1、Sudhir Roy
2、Rahul Singh

电子邮件组表
ID、电子邮件类型、用户 ID
1、促销、1
2、广告、2
3、广告、1

需要根据电子邮件类型获取所有用户。(电子邮件类型是动态的,以数组形式发送,如 ["Promotional", "Advertisement"]

我们如何根据 emailGroup 找到用户。

我尝试使用 [Op.and] 和 [Op.in]。两者都不起作用。

这是我的示例代码。

const user = User.findAll({
                where: {
                       "$emailGroup.emailType$": {
                               [Op.in]: emailGroup // Array from client
                       },
                },
                include: { 
                       model: EmailGroup
                }
             })

当电子邮件组数组是单个时它工作得很好,但当我们尝试查找多个电子邮件组时它不起作用。

标签: node.jssql-serversequelize.js

解决方案


您还可以将 where 子句添加到包含对象。

结果 findAll 将变为:

  const user = User.findAll({
    include: [
      {
        model: EmailGroup,
        where: {
          emailType$: {
            [Op.in]: emailGroup, // Array from client
          },
        },
      },
    ],
  });

如文档中所示:https ://sequelize.org/v5/manual/querying.html#relations---associations


推荐阅读