问题描述
我正在尝试通过预定义的表roleUsers在用户和角色之间建立多对多关系。
const User = sequelize.define('User',{
firstName: DataTypes.STRING,lastName: DataTypes.STRING,email: DataTypes.STRING,phone: DataTypes.STRING,password: DataTypes.STRING,deletedAt: DataTypes.DATE,},const Role = sequelize.define('Role',{
roleName: DataTypes.STRING,const RoleUser = sequelize.define('RoleUser',{
userId: {
type: DataTypes.INTEGER,references: {
model: User,key: 'id',roleId: {
type: DataTypes.INTEGER,references: {
model: Role,Role.belongsToMany(User,{
through: RoleUser,foreignKey: 'roleId',otherKey: 'userId',as: 'users',});
User.belongsToMany(Role,foreignKey: 'userId',otherKey: 'roleId',as: 'roles',});
但是当我尝试称这种关系(或任何其他M:N关系-1:Ms和1:1s工作正常)
const roles = await Role.findAll({
include: [
{
model: User,through: RoleUser,],});
我在下面遇到错误
SequelizeEagerLoadingError: User is not associated to Role!
我通常尝试取出东西,并以各种组合放回定义的外键,其他键,定义中的别名,并改变我如何调用模型(删除别名,通过等)。我也尝试不在联结表中指定引用。
我的模型和关系安排在单独的页面上,但是它们的结合都很好,因为我可以看到1:M关系很好地工作,只是我的M:M关系搞砸了。我将非常感谢您的帮助!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)