postgresql - 如何在 sequelize 中使用 where 子句两次包含相同的表数据?

标签 postgresql include sequelize.js where-clause

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

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

关于postgresql - 如何在 sequelize 中使用 where 子句两次包含相同的表数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53646257/

相关文章:

sql - PostgreSQL 从一个表中选择全部并从表关系中加入计数

html - 没有内容的滚动条

node.js - For 循环迭代继续,而不是等待 `async.parallel` 首先在 NodeJS 中完成其执行

javascript - 如何查找所有行并获取 sequelize 中所有行的总金额

PostgreSQL 触发器和临时表

sql - 为每个不同的用户获取表中的第一个最低值及其发生日期

c++ - 更改包含文件时,visual studio 如何知道要重建哪些 cpp 文件?

postgresql - 手动插入 Heroku PostgreSQL

django - 层次结构数据的单表或多表

java - 将 jena 库添加到 netbeans