es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo podemos insertar una clave primaria compuesta en una tabla N:M utilizando sequelize?

Tenemos una tabla llamada categoríatieneproveedorservicio que tiene una clave primaria compuesta (idCategoría, idUsuario) y tenemos una tabla horarios con una clave primaria (idHorarios).

Lo que queremos hacer es: queremos construir una tabla N:M en sequelize utilizando la tabla categoríatieneproveedorservicio y horarios. El resultado debería ser la tabla categoríaxhorarios que se puede ver en la siguiente imagen:

Como se puede ver, tiene una clave primaria compuesta (idHorarios, idCategoría, idUsuario), pero cuando lo hacemos en sequelize obtenemos la siguiente imagen:

Así que puedes ver que falta el idUsuario de categoríatieneproveedorservicio. ¿Podemos lograr esto en sequelize?

El código que tenemos para la tabla categoríaxhorarios es:

const CategoriaTieneProveedorServicio = require("../../categoriaTieneProveedorServicio/api/categoriaTieneProveedorServicio");
const Horarios = require("../../horarios/api/horarios");

const categoriaXHorarios = dbconfig.sequelize.define('CategoriaXHorarios', {
    ocupado : {
        type: dbconfig.Sequelize.BOOLEAN,
        allowNull: false
    },
    experiencia : {
        type: dbconfig.Sequelize.INTEGER,
        allowNull: false
    }
}, {
    freezeTableName: true,
    timestamps: false
});

CategoriaTieneProveedorServicio.belongsToMany(Horarios, {foreignKey: 'idCategoria', through: categoriaXHorarios});
Horarios.belongsToMany(CategoriaTieneProveedorServicio, {foreignKey: 'idHorarios',through: categoriaXHorarios});

categoriaXHorarios.sync()

module.exports = categoriaXHorarios;

Hazme saber si necesitas ver la implementación de las otras 2 tablas.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, necesitamos ver la implementación de las otras 2 tablas (category_has_serviceprovider y timeslots) para entender el problema y sugerir una solución que incluya idUser en la clave primaria compuesta de la tabla category_x_timeslots.

Comments are closed.