我有树模型 UserCompanyUserCompany
我有协会

        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=10UserId=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/

10-14 10:03