2017-08-04 68 views
0

嗨我想将我的用户模型与登录模型和Question_details models.But关联,但如果我使用Question_details关联,然后我geeting eagerLodingError:用户没有关联登录,但如果我评论它然后它工作正常,所以如何我可以联系它吗?使用sequelize关联不同的模型?

但是,如果我与

User Model 

    module.exports = (sequelize, DataTypes) => { 
     var Users = sequelize.define('users', { 
      name: { 
       type: DataTypes.STRING(100) 
      } 
      phone: { 
       type: DataTypes.BIGINT, 
       unique: true 
      } 
     }, { freezeTableName: true }); 

     Users.associate = function(models) { 
      Users.hasOne(models.login, { 
       foreignKey: 'user_id', 
       as: 'loginDetails' 
      }); 
     }; 

     Users.associate = function(models) { 
      Users.hasMany(models.customer_query, { 
       foreignKey: 'user_id', 
       as: 'queryDetails' 
      }); 
     }; 

     return Users; 
    }; 

LOGIN模型

module.exports = (sequelize, DataTypes) => { 
    var Login = sequelize.define('login', { 
     user_id: { 
      type: DataTypes.INTEGER 
     }, 
     user_name: { 
      type: DataTypes.STRING(500), 
      isEmail: true 
     }, 
     password: { 
      type: DataTypes.STRING(500) 
     }, 
     role_id: { 
      type: DataTypes.INTEGER 
     } 
    }, { 
     underscored: true, 
     freezeTableName: true 
    }); 

    Login.associate = function(models) { 
     Login.belongsTo(models.users, { 
      foreignKey: 'user_id', 
      onDelete: 'CASCADE' 
     }); 
    }; 
    Login.associate = function(models) { 
     Login.belongsTo(models.roles, { 
      foreignKey: 'role_id', 
      onDelete: 'CASCADE' 
     }); 
    }; 
    return Login; 

}关联;

questionDetails型号

module.exports = function(sequelize, DataTypes) { 
     var questionDetails = sequelize.define('question_details', { 
      query_id: { 
       type: DataTypes.INTEGER 
      }, 
      ques_type_id: { 
       type: DataTypes.INTEGER 
      }, 
      created_by: { 
       type: DataTypes.INTEGER 
      }, 
      question: { 
       type: DataTypes.TEXT 
      }, 

     }, { freezeTableName: true }); 

questionDetails.associate = function(models) { 
      questionDetails.belongsTo(models.users, { 
       foreignKey: 'created_by', 
       onDelete: 'CASCADE' 
      }); 
     }; 

     return questionDetails; 
    }; 

回答

1

你只需要一次定义关联。当你第二次定义它时,实际上是在覆盖它。所以对于User模型,你应该实际上做...

Users.associate = function(models) { 
     Users.hasOne(models.login, { 
     foreignKey: 'user_id', 
     as: 'loginDetails' 
     }); 

     Users.hasMany(models.customer_query, { 
     foreignKey: 'user_id', 
     as: 'queryDetails' 
     }); 
    }; 

同样做你的登录模式,你也覆盖associate功能存在。

祝你好运! :)

+0

Thanks @Dylan ..it works –