如何在sequalize中连同where子句一起两次包含相同的表数据?

时间:2018-12-06 07:11:15

标签: postgresql include sequelize.js where-clause

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

  

聊天表包含recipientIdsenderId messagecreated_atupdated_at

     

id //仅是用户ID,他可以是发件人或收件人

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

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

1 个答案:

答案 0 :(得分:0)

在这里,您可以通过关联定义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' }
    ]
})