I’m trying to use a Many-to-Many relation here is my model :
const Refinement = sequelize.define('refinement', {
ID : { type: DataTypes.INTEGER(10), allowNull: false, autoIncrement: true, primaryKey: true },
weaponID : { type: DataTypes.INTEGER(10), allowNull: false },
rank : { type: DataTypes.TINYINT(1), allowNull: false },
},
{ freezeTableName: true, timestamps: false, })
const Refinement_Bonus = sequelize.define('refinement_effect', {
ID : { type: DataTypes.INTEGER(10), allowNull: false, autoIncrement: true, primaryKey: true },
refinementID: { type: DataTypes.INTEGER(10), allowNull: false },
effectID : { type: DataTypes.INTEGER(10), allowNull: false },
},
{ freezeTableName: true, timestamps: false, })
const EffectBonus = sequelize.define('effectbonus', {
ID : { type: DataTypes.INTEGER(10), allowNull: false, autoIncrement: true, primaryKey: true },
refinementID: { type: DataTypes.INTEGER(10), allowNull: false },
isPercentage: { type: DataTypes.BOOLEAN, allowNull: false },
targetStat : { type: DataTypes.CHAR(16), allowNull: false },
sourceStat : { type: DataTypes.CHAR(16), allowNull: false },
sourceRatio : { type: DataTypes.FLOAT(4,3), allowNull: false },
isOptionnal : { type: DataTypes.BOOLEAN, allowNull: false },
isStackable : { type: DataTypes.BOOLEAN, allowNull: false },
},
{ freezeTableName: true, timestamps: false, })
Refinement.belongsToMany(EffectBonus, {through: Refinement_Bonus, targetKey:"refinementID"});
EffectBonus.belongsToMany(Refinement, {through: Refinement_Bonus, foreignKey:"effectID"});
And I’m getting this error sqlMessage: "Unknown column 'effectbonus.effectbonuID' in 'field list'"
sqlMessage: "Unknown column 'effectbonus.effectbonuID' in 'field list'",
sql: 'SELECT `refinement`.*, `effectbonus`.`ID` AS `effectbonus.ID`, `effectbonus`.`refinementID` AS `effectbonus.refinementID`, `effectbonus`.`isPercentage` AS `effectbonus.isPercentage`, `effectbonus`.`targetStat` AS `effectbonus.targetStat`, `effectbonus`.`sourceStat` AS `effectbonus.sourceStat`, `effectbonus`.`sourceRatio` AS `effectbonus.sourceRatio`, `effectbonus`.`isOptionnal` AS `effectbonus.isOptionnal`, `effectbonus`.`isStackable` AS `effectbonus.isStackable`, `effectbonus`.`effectbonuID`
AS `effectbonus.effectbonuID`, `effectbonus->refinement_effect`.`ID` AS `effectbonus.refinement_effect.ID`, `effectbonus->refinement_effect`.`refinementID` AS `effectbonus.refinement_effect.refinementID`, `effectbonus->refinement_effect`.`effectID` AS `effectbonus.refinement_effect.effectID` FROM (SELECT `refinement`.`ID`, `refinement`.`weaponID`, `refinement`.`rank` FROM `refinement` AS `refinement` LIMIT 1) AS `refinement` LEFT OUTER JOIN ( `refinement_effect` AS `effectbonus->refinement_effect` INNER JOIN `effectbonus` AS `effectbonus` ON `effectbonus`.`refinementID` = `effectbonus->refinement_effect`.`effectID`) ON `refinement`.`ID` = `effectbonus->refinement_effect`.`refinementID`;',
I REALLY don’t understand why sequelize keep using this column taken from I don’t even know where. Can someone explains me how it works please ? I’m starting to get tired of Sequelize…
Optionnal question: Can we also avoid all these renames ?