如何在 sequelize 的 where 子句中两次包含相同的 table 数据?

How to include same table data twice along with where clause in sequalize?

想要从特定用户的聊天 table 中获取聊天详细信息以及发件人和收件人详细信息(两者都是此应用的用户,因此用户详细信息存储在用户 table 中) 我试过这个查询

chat table has recipientId, senderId message, created_at & updated_at.

id // is nothing but user id, he can a sender or recipient

 const result = await models.chat.findAll({
            where: {
                $or: [{
                    senderId: {
                        $eq: id
                    }
                }, {
                    recipientId: {
                        $eq: id
                    }
                }]
            }, include :[{
                model:models.User,
                as:'User'
            }]
        })

通过上述查询,我​​只获得了收件人用户的详细信息,但我想获得这两个用户的详细信息。

给你,你可以通过定义带有关联的 diff 别名来做到这一点:

chat.belongsTo(User, {as: 'sender', foreignKey : 'senderId'});
chat.belongsTo(User, {as: 'recipient', foreignKey : 'recipientId'});

await models.chat.findAll({
    where: {
        $or: [{
            senderId: { $eq: id }
        },{
            recipientId: { $eq: id }
        }]
    }, 
    include :[ 
        { model:models.User , as:'sender' },
        { model:models.User , as:'recipient' }
    ]
})