一个表包含2个用户ID cols,userOneId和userTwoId。我的用户ID可以在任一列中。我想获取我的userId在任何一个col中的所有行,并且还包括其他用户的关联对象。
这是最新的尝试。我查询我的ID在userOneId或userTwoId中的位置,并为其他用户ID(别名)使用case / when的别名。然后在包含中使用别名otherUserId,以返回其他与用户相关的对象。
where: {
[Op.or]: [{
userOneId: userId,
}, {
userTwoId: userId,
}]
},
attributes: [
'id',
[sequelize.literal("CASE WHEN \"userOneId\" = " + userId + " THEN \"userTwoId\" ELSE \"userOneId\" END"), 'otherUserId']
],
include: {
where: {
id: '$otherUserId$'
},
model: sequelize.models.User,
as: 'otherUser',
attributes: [ 'id', 'name', ...
模型关联为:
MyModel.belongsTo(models.User, {
as: 'userOne',
foreignKey: 'userOneId'
})
MyModel.belongsTo(models.User, {
as: 'userTwo',
foreignKey: 'userTwoId'
})
User.hasMany(models.MyModel, {
as: 'userOne',
foreignKey: {
name: 'userOneId',
allowNull: false
}
})
User.hasMany(models.MyModel, {
as: 'userTwo',
foreignKey: {
name: 'userTwoId',
allowNull: false
}
})
但是,它错误
用户多次与MyModel关联。要标识正确的关联,您必须使用“ as”关键字来指定要包含的关联的别名。
关于是否或如何使其正常工作的任何指针?