如何在 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' }
]
})
想要从特定用户的聊天 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' }
]
})