sequelize模型关联_使用sequelize关联不同的模型?

Hi I am trying to associate my User model with login model and Question_details models.But if i am using the Question_details association then i am geeting eagerLodingError :user is not associated to login but if i am commenting it then it works fine so how can i associate it ?

But if i am associating with

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 MODEL

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 Model

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;

};

解决方案

You only have to define associate once. When you define it the second time you're actually overwriting it. So for the User model you should actually do...

Users.associate = function(models) {

Users.hasOne(models.login, {

foreignKey: 'user_id',

as: 'loginDetails'

});

Users.hasMany(models.customer_query, {

foreignKey: 'user_id',

as: 'queryDetails'

});

};

Do similarly for your login model as you are also overwriting the associate function there.

Good luck! :)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值