我正在使用sequelize,并且我有一个带有两个外键的模型
app.schemas.messengers.belongsTo(app.schemas.users, {
foreignKey: 'id_user_to',
as: 'to'
});
app.schemas.messengers.belongsTo(app.schemas.users, {
foreignKey: 'id_user_from',
as: 'from'
});
,并且查询结果必须返回该特定用户的所有消息 这是查询的代码
return Users.findAll({
attributes: ['uuid', 'id', 'profile_pic', 'firstname', 'lastname', 'online'],
where: whereUser,
include: [{
model: Messengers,
as: 'from',
// as: 'to',
where: whereMessenger,
$or: [{
id_user_to: user.id,
},
{
id_user_from: user.id
}
],
order: [
['createdAt', 'ASC'],
],
}]
})
但仅返回给我写信的用户的消息,而不是给我写信给用户的消息。 它有什么办法,所以我可以在sequelize的as属性上放置两个别名,或者还有其他办法吗?
答案 0 :(得分:1)
您必须输入两次,例如
...
include: [
{
model: Messengers,
as: 'from'
/* other stuff */
},
{
model: Messengers,
as: 'to'
/* other stuff */
}
],
...
此外,别名“ to”和“ from”是保留字,您可能会遇到麻烦。我建议改用msgTo和msgFrom ...