导致多对多M:N关系不起作用错误:“ SequelizeEagerLoadingError:$ {model1}与$ {model2}没有关联”

问题描述

我正在尝试通过预定义的表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 (将#修改为@)