2017-08-04 79 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 –