Я пытаюсь установить отношения «многие ко многим» между пользователями и ролями через предопределенную таблицу 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,
key: 'id',
},
},
},
Role.belongsToMany(User, {
through: RoleUser,
foreignKey: 'roleId',
otherKey: 'userId',
as: 'users',
});
User.belongsToMany(Role, {
through: RoleUser,
foreignKey: 'userId',
otherKey: 'roleId',
as: 'roles',
});
Однако, когда я пытаюсь вызвать это отношение (или любое другое отношение M:N - 1:Ms и 1:1s работают нормально), как показано ниже
const roles = await Role.findAll({
include: [
{
model: User,
as: 'users',
through: RoleUser,
},
],
});
Я получаю ошибку ниже
SequelizeEagerLoadingError: User is not associated to Role!
Обычно я пытался вынимать вещи и вставлять обратно в различных комбинациях определенные внешние ключи, другие ключи, псевдонимы в определении и варьировать то, как я вызываю модели (удаляя псевдонимы, через и т. д.). Также я попытался не указывать ссылку в таблице соединений.
Мои модели и отношения расположены на отдельных страницах, но все они соединяются нормально, поскольку я вижу, что отношения 1:M работают нормально, только мои отношения M:M путаются. Буду очень благодарен за любую помощь!