Saltar al contenido

Sequelize Assosication llamado con algo que no es una subclase de Sequelize.

Solución:

Poniendo
A.hasOne(B)
y
B.belongsTo(A) en el mismo archivo me resolvió el problema.

Necesita agregar sus asociaciones en una función llamada associate(models). los models El argumento contiene todo tu existente Model definiciones codificadas por su nombre de definición (“user_tm” en este caso).

var User = sequelize.define('user_tm', {
  // ... user_tm definition
});

var UserEmployee = sequelize.define('user_employee_tm', {
  // ... user_employee_tm definition
});

UserEmployee.associate = (models) => {
  UserEmployee.belongsTo(models.user_tm, {foreignKey: 'ID', as: 'Employee'});
};

Resulta que descubrí que solo necesito definir mi Objeto de UserEmployee Aquí está el código que he corregido

const sequelize = require('../config/connectionDatabase');
var Sequelize = require('sequelize');
const User = require('../models/user');
const Company = require('../models/company');

var UserEmployee = sequelize.define('user_employee_tm', {
    DateJoin: {
        type: Sequelize.DATE
    },
    UserID: {
        type: Sequelize.INTEGER,
        references: {
            model: User,
            key: "UserID"
        }
    },
    CompanyID: {
        type: Sequelize.INTEGER,
        references: {
            model: Company,
            key: "CompanyID"
        }
    }
});
UserEmployee.belongsTo(Company, {as: 'Company', foreignKey: 'CompanyID'});
UserEmployee.belongsTo(User, {as: 'User', foreignKey: 'UserID'});
module.exports = UserEmployee;

no es necesario establecer como asociado debido a que Sequelize ha establecido el método asociarlos, y también he arreglado la relación.

Espero que otros que tienen el mismo problema conmigo puedan cuidarlo, sin hacer 2 modelos terminan en 1 archivo.

PD Gracias por doublesharp por su ayuda para señalar mi error.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *