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