sequelize错误模型与另一个模型无关

时间:2017-06-12 20:21:48

标签: node.js postgresql sequelize.js

我想要包含一个BelongsTo协会

我有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

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

非常感谢帮助

2 个答案:

答案 0 :(得分:0)

执行以下操作

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

对于用户来说也是如此,因为内部使用的模型超出了范围,所以最好用模型来引用它。

答案 1 :(得分:0)

我没注意到安装的续集版本(由npm)是最新的一个v4,它有不同的语法,我通过回到v3解决了问题

关于upgrading to v4

的Sequelize文档