I create a relation N:N with the tables Users
and Roles
, generating a third table UserRole
.
Running a findAll
in this relation I receive a message which SequelizeEagerLoadingError: UserRole is not associated to User!
This is how I define the models:
User:
const { Model } = require("sequelize");
module.exports = (sequelize, DataTypes) => {
class User extends Model { };
User.associate = (models) => {
User.belongsToMany(models.Role, { through: models.UserRole });
}
User.init({
username: DataTypes.STRING,
password: DataTypes.STRING,
}, { sequelize, modelName: "User" })
return User;
}
Roles:
const { Model } = require("sequelize");
module.exports = (sequelize, DataTypes) => {
class Role extends Model { }
Role.associate = (models) => {
Role.belongsToMany(models.User, { through: models.UserRole });
};
Role.init({
name: DataTypes.STRING
}, { sequelize, modelName: 'Role' });
return Role
}
UserRole:
const { Model } = require("sequelize");
module.exports = (sequelize, DataTypes, models) => {
class UserRole extends Model { }
UserRole.init({
user_id: {
type: DataTypes.INTEGER,
references: {
model: Model.User,
key: 'id'
}
},
role_id: {
type: DataTypes.INTEGER,
references: {
model: Model.Role,
key: 'id'
}
}
}, { sequelize, modelName: "UserRole" });
return UserRole
}
question from:https://stackoverflow.com/questions/66052888/is-it-correct-the-way-to-associate-models-using-sequelize