Как включить одни и те же данные таблицы вместе с предложением where в sequalize? - PullRequest
0 голосов
/ 06 декабря 2018

Хотите получить данные чата из таблицы чата определенного пользователя вместе с данными отправителя и получателя (оба являются пользователями этого приложения, поэтому данные пользователей хранятся в пользовательской таблице) Я пробовал этот запрос

таблица чата имеет recipientId, senderId message, created_at & updated_at.

id // это не что иное, как идентификатор пользователя, он может быть отправителем или получателем

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

С помощью приведенного выше запроса я получаю только данные о пользователях получателя, но мне бы хотелось получить обе данные о пользователе.

1 Ответ

0 голосов
/ 06 декабря 2018

Итак, вы можете сделать это , определив псевдоним дифференциала с ассоциациями :

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' }
    ]
}) 
...