繁体   English   中英

Sequelize 在 WHERE 查询中包含关联

[英]Sequelize include association in WHERE query

我有以下查询来搜索User

const users = await User.findAndCountAll({
    limit: 20,
    offset: 20 * page,
    attributes: {
        include: [[literal('`discord_user.username`'), 'username']]
    },
    order: [['email', 'ASC']],
    where: {
        [Op.or]: [
            {email: {[Op.like]: '%' + query + '%'}},
            {full_name: {[Op.like]: '%' + query + '%'}},
        ]
    },
    include: [
        {model: Licence},
        {
            model: DiscordUser,
            as: "discord_user",
        }
    ]
});

如 include 参数所示,我已经加入了DiscordUser model。 但是,我想在我的WHERE查询中的DiscordUser.username字段上包含一个LIKE查询。

我想出的伪代码是为了演示我所追求的内容,如下所示:

where: {
    [Op.or]: [
        {email: {[Op.like]: '%' + query + '%'}},
        {full_name: {[Op.like]: '%' + query + '%'}},
        DiscordUser.username LIKE query

    ]
}

我像这样将DiscordUser关联到User

User.belongsTo(DiscordUser, {as: 'discord_user'})

我怎样才能做到这一点?

只需使用包含$字符的语法来指示主要where条件中关联 model 的字段:

where: {
        [Op.or]: [
            {email: {[Op.like]: '%' + query + '%'}},
            {full_name: {[Op.like]: '%' + query + '%'}},
            { '$discord_user.username$': {[Op.like]: '%' + query + '%'}},
        ]
    },```

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM