使用 sequelize 关联不同的模型?
Posted
技术标签:
【中文标题】使用 sequelize 关联不同的模型?【英文标题】:Associate different models using sequelize? 【发布时间】:2018-01-12 02:24:33 【问题描述】:您好,我正在尝试将我的用户模型与登录模型和 Question_details 模型相关联。但是如果我使用 Question_details 关联,那么我会收到 eagerLodingError :user is not associated to login 但如果我正在评论它那么它可以正常工作我怎么能关联它?
但如果我与
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;
;
登录模式
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;
;
问题详情模型
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
函数。
祝你好运! :)
【讨论】:
我在 sequelize 文档中的任何地方都找不到关联函数或类似 Model.associate = function(models) 的任何语法。谁能帮我在文档或任何地方找到有关关联功能的详细信息。 @AbhishekKumarUsers.associate
是我们为将这些关系添加到模型而创建的自定义函数。我们必须这样做,因为在所有模型都导入 Sequelize 之后,我们需要调用 associate
函数。有关示例,请参见 github.com/sequelize/express-example/blob/master/models/…。
我的问题几乎相同,但很少嵌套,jsfiddle.net/j74rt9y1/1 第二个关联不起作用,没有错误,任何人都可以帮忙吗?
@DylanAspden 如何为用户创建登录记录?
这里是完整的解释它是如何完成的codebysamgan.com/…以上是关于使用 sequelize 关联不同的模型?的主要内容,如果未能解决你的问题,请参考以下文章