我有树模型 User
、 Company
和 UserCompany
。
我有协会
Company.belongsToMany(User, {
as: 'users',
through: {
model: UserCompany,
unique: false
},
onDelete: 'cascade'
});
User.belongsToMany(Company, {
as: 'companies',
through: {
model: UserCompany,
unique: false
},
onDelete: 'cascade'
});
我试图查询公司购买运行此代码
sql.Company.findAll({
where: query,
include: [{model:sql.User, as:'users', attributes: ['id', 'first_name', 'last_name', 'email']}],
order: sort,
limit: limit,
offset: offset
})
我有两个
UserCompany
元素,分别是 CompanyId=10
和 UserId=50
,但查询只返回其中之一。它返回数组
{id: 10,
...,
users: {
id: 50,
...,
UserCompany: {}
}
}
所以
UserCompany
不是数组,它只是一个元素。但我想把它们都拿来。如何修复我的关联代码?
最佳答案
你的联想是对的。 UserCompany
属性不应该显示每个用户的所有 UserCompany
关系——它只是显示将用户包含在该查询结果中的关系。
如果您要查找的是与返回数组中的每个用户关联的公司列表,您可以为此添加一个 include
:
Company.findAll({
include: [{
model: User,
as: 'users',
attributes: ['id', 'first_name', 'last_name', 'email'],
// Add this
include: [{
model: Company,
as: 'companies',
attributes: ['id', 'name']
}],
}],
})
这在返回的数组中为您提供以下格式:
{
id: 1,
first_name: 'Nelson',
last_name: 'Bighetti',
email: '[email protected]',
UserCompany: {...},
companies: [
{ id: 1, name: 'Hooli', UserCompany: {...} },
{ id: 2, name: 'Pied Piper', UserCompany: {...} }
]
}
关于sql - 通过模型关联对 nodejs 进行序列化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32672477/