簡體   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