当我尝试同步数据库时出现此奇怪的错误:
Unhandled rejection Error: Cyclic dependency found. roles is dependent of itself.
Dependency chain: roles -> users => roles
我有以下这种称为权限的连接表模型
const Permission = db.define('permission', {
id: {
type: type.INTEGER,
primaryKey: true,
autoIncrement: true
},
role_id: {
type: type.INTEGER,
references: {
model: 'roles',
key: 'id',
}
},
resource_id: {
type: type.INTEGER,
references: {
model: 'resources',
key: 'id',
}
},
});
为什么会发生此错误?我该如何解决?在我的用户模型中,用户具有一个角色:
const User = db.define('user', {
id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
},
role_id : {
type: Sequelize.INTEGER,
references: {
model: 'roles',
key: 'id',
}
}
});
User.hasOne(Role)
编辑:这是我的榜样:
const Role = db.define('role', {
id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
},
name: Sequelize.STRING,
})
module.exports = Role
在续集文档中说:
A.hasOne(B)关联意味着一对一关系在A和B之间存在,外键在目标模型(B)
这意味着,用户模型不应具有角色模型的外键。尝试将您的用户模型更改为:
const User = db.define('user', {
id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
}
});
User.hasOne(Role)
然后是您的榜样:
const Role = db.define('role', {
id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
},
name: Sequelize.STRING,
user_id : {
type: Sequelize.INTEGER,
references: {
model: 'users',
key: 'id',
}
}
})
Role.belongsTo(User);
module.exports = Role