2017-06-12 77 views
0

我想包括一个属于关联关联sequelize误差模型没有关联到另一个模型

我有2种型号

用户,团队 团队有许多用户,但用户属于一个队只,和团队有一个团队的领导

这里用户模型定义

module.exports = (sequelize, DataTypes) => { 
    const user = sequelize.define('user', { 
    username: { 
    type: DataTypes.STRING, 
    allowNull: false 
    }, 
    password: { 
    type: DataTypes.STRING, 
    allowNull: false 
    }, 
    team_id: { 
    type: DataTypes.INTEGER, 
    allowNull: false 
    } 
}, 
{ 
    classMethods: { 
    associate: (models) => { 
    user.belongsTo(models.team,{ 
     targetkey: 'id', 
     foreignKey: 'team_id' 
    }); 
    }, 
}, 
}); 
return user; 
}; 

这里是团队模型定义

module.exports = (sequelize, DataTypes) => { 
    const team = sequelize.define('team', { 
    name: { 
    type: DataTypes.STRING, 
    allowNull: false 
    }, 
    leader: { 
    type: DataTypes.INTEGER, 
    allowNull: false 
    } 
{ 
    classMethods: { 
    associate: (models) => { 
    team.hasMany(models.user, { 
     foreignKey: 'id' 
    }); 
    team.belongsTo(models.user,{ 
     targetkey: 'id', 
     foreignKey: 'leader' 
    }); 
    }, 
    }, 
}); 
    return team; 
}; 

我想球队信息为每个用户在列表中的用户 像这样

{ 
    "id": 3, 
    "username": "user123", 
    "password": "password", 
    "team_id": 1, 
    "team": { 
     "name": "name", 
     "leader": "leader_name" 
    } 
} 

我想包括球队,但反应是空

这里是代码:

list(req, res){ 
     return models.user.findAll({ 
      include: [{ 
       model: models.team 
      }], 
      offset: req.query.offset, 
      limit: req.query.limit 

     }) 
     .then(function(users){ 

     res.status(200).send(users) 
     }) 
     .catch(function(error){ 
     res.status(400).send(error) 
     }) 
    } 

响应是空的

产量为{} 误差 队没有关联到用户

方言:Postgres的

数据库版本:9.6.3

Sequelize版本:3.30.4

我不使用别名,我想知道我的定义中可能有什么问题

您的帮助

+0

同样的问题问题对我来说!你是如何解决这个问题的? –

+0

@AliSherafat它是我使用的续集版本,我认为它是3.3,但它是最新的(使用npm安装) – luna

回答

0

我没有注意到,安装sequelize版本(由NPM)是最新的一个v4的,具有不同的语法,我解决了回去V3

Sequelize文档约upgrading to v4

0

非常感谢执行以下操作

associate: (models) => { 
models.team.hasMany(models.user, { 
    foreignKey: 'id' 
}); 
models.team.belongsTo(models.user,{ 
    targetkey: 'id', 
    foreignKey: 'leader' 
}); 
} 

同样对于用户来说,由于内部使用的模型超出了范围,以便其更好地指它usinf模型。

+0

仍然是相同的错误,它不工作:( – luna

相关问题