-2
I’m doing a Ode project, using sequelize as ORM. I have 4 tables relating [Factor, Subfactor, Obs_factor, Goals], when I will run the create of this error: Error: Factor.hasMany called with Something that’s not a subclass of Sequelize.Model
Remarks:
database: postgresql
An obs_factor can only be related to one factor;
A subfactor has a factor;
A factor may be related to several sub_factors;
A goal relates to a subfactor;
model Fator
    'use strict';
    module.exports = (sequelize, DataTypes) => {
      const Fator = sequelize.define('Fator', {
        descricao: DataTypes.STRING
      }, {});
      Fator.associate = function(models) {
        this.belongsTo(models.Obs_fator, {
          as: 'obs_Fatores'
        });
        this.hasMany(models.Sub_fator, {
          foreignKey: 'id',
          as: 'Fatores'
        })
      };
      return Fator;
    };
model Sub_factor
    'use strict';
    const Metas = require('./metas');
    module.exports = (sequelize, DataTypes) => {
      const Sub_Fator = sequelize.define('Sub_Fator', {
        fatorId: DataTypes.INTEGER,
        descricao: DataTypes.STRING
      }, {});
      Sub_Fator.associate = function(models) {
        Sub_Fator.belongsTo(models.Fator, {
          foreignKey: 'fatorId',
          as: 'Fator'
        });
        Sub_Fator.hasMany(Metas);
      };
      return Sub_Fator;
    };
model obs_factor
    'use strict';
    module.exports = (sequelize, DataTypes) => {
      const Obs_fator = sequelize.define('Obs_fator', {
        alunoId: DataTypes.INTEGER,
        fatoId: DataTypes.INTEGER,
        descricao: DataTypes.STRING,
        value: DataTypes.INTEGER
      }, {});
      Obs_fator.associate = function(models) {
        Obs_fator.belongsTo(models.Fator, {
          foreignKey:'fatoId', as:'fator'
        })
      };
      return Obs_fator;
    };
model Metas
    'use strict';
    module.exports = (sequelize, DataTypes) => {
      const Metas = sequelize.define('Metas', {
        sub_fatorId: DataTypes.INTEGER,
        alunoId: DataTypes.INTEGER,
        descricao: DataTypes.STRING,
        value: DataTypes.INTEGER
      }, {});
      Metas.associate = function(models) {
        Metas.belongsTo(models.Sub_fator, {
          foreignKey: 'sub_fatorId', as: 'sub_fator'
        })
      };
      return Metas;
    };