2017-08-04 24 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

あなたは一度だけ仲間を定義する必要があります。 2回目に定義すると、実際に上書きしています。あなたもそこassociate機能を上書きしているように、あなたが実際に行う必要がありますUserモデルのために...

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

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

はログインモデルについても同様に行います。

幸運を祈る! :)

+0

ありがとう@Dylan ..it works –

関連する問題