【问题标题】:How to add where condition on sub query using sequelize?如何使用 sequelize 在子查询上添加 where 条件?
【发布时间】:2022-01-09 16:53:37
【问题描述】:

我正在尝试编写一个子查询,如果条件不存在,则不应使用 sequelize 显示完整的对象。这是我的查询

let dates = await UserEvent.findAll({
            where: {
                posted_by: {
                    [Op.not]: user_id
                },
                start_date_time: {
                    [Op.gte] : Date.now()
                },
                // '$event_interested.user_account_id$' : { [Op.not]: user_id},
            },
            subQuery: false,
            include: [
                {
                    model: User_Account,
                    as: 'user',
                    where: {
                        gender: gender
                    }
                },
                {
                    model: Event_Interest,
                    as: 'event_interested',
                    required: false,
                    duplicating: false,
                    where: {
                        user_account_id: {
                            [Op.not] : user_id
                        }
                    }
                }
            ],
        })

现在,如果 Event_Interest 上存在 user_id,那么我不想显示该 User_Event。但我无法实现。在当前情况下,如果 Event_Interest 上存在 user_id,则仅显示该兴趣不显示但 User_Event 仍在显示。

任何有帮助的建议。谢谢

【问题讨论】:

    标签: node.js sequelize.js


    【解决方案1】:

    您可以为Event_Interest 模型设置required: true。如果为 false,则 Sequelize 执行 OUTER JOIN。因此,如果您将其更改为true,查询将作为INNER JOIN 执行,并且如果 UserEvent 没有 Event_Interest,您不应在输出中收到它。

    例子:

    let dates = await UserEvent.findAll({
            where: {
                posted_by: {
                    [Op.not]: user_id
                },
                start_date_time: {
                    [Op.gte] : Date.now()
                },
                // '$event_interested.user_account_id$' : { [Op.not]: user_id},
            },
            subQuery: false,
            include: [
                {
                    model: User_Account,
                    as: 'user',
                    where: {
                        gender: gender
                    }
                },
                {
                    model: Event_Interest,
                    as: 'event_interested',
                    required: true,
                    duplicating: false,
                    where: {
                        user_account_id: {
                            [Op.not] : user_id
                        }
                    }
                }
            ],
        })
    

    【讨论】:

      猜你喜欢
      • 2012-06-04
      • 1970-01-01
      • 1970-01-01
      • 2021-08-12
      • 2021-11-25
      • 2020-05-06
      • 1970-01-01
      • 2016-07-09
      • 2020-01-22
      相关资源
      最近更新 更多