как использовать JOIN sequelize? - PullRequest
0 голосов
/ 20 апреля 2020

как получить «данные» на пересечении «основной» и «левый»? Мне нужно отобразить контакты на основе выбранных кнопок в левом и правом меню.

Предположим, в данных будут контакты сотрудников, слева от отдела и в основном будут этажи. Мне нужно получить контакты из группы офисов и этажей

Модели

    left = sequelize.define('left',{
        id:{
            type: Sequelize.INTEGER,
            autoIncrement: true,
            primaryKey: true,
            allowNull: false
        },
        name:{
            type: Sequelize.STRING,
            allowNull: false
        }
    },{
        timestamps: false,
        freezeTableName: true
    }),
    main = sequelize.define('main',{
        id:{
            type: Sequelize.INTEGER,
            autoIncrement: true,
            primaryKey: true,
            allowNull: false
        },
        name:{
            type: Sequelize.STRING,
            allowNull: false
        }
    },{
        timestamps: false,
        freezeTableName: true
    }),
    data = sequelize.define('data',{
        id:{
            type: Sequelize.INTEGER,
            autoIncrement: true,
            primaryKey: true,
            allowNull: false
        },
        function:{
            type: Sequelize.STRING,
            allowNull: false
        },
        name:{
            type: Sequelize.STRING,
            allowNull: false
        },
        cabinet:{
            type: Sequelize.STRING,
            allowNull: false
        },
        phone:{
            type: Sequelize.STRING,
            allowNull: false
        }
    },{
        timestamps: false,
        freezeTableName: true
    }),
    m_l = sequelize.define('m_l',{
        id:{
            type: Sequelize.INTEGER,
            autoIncrement: true,
            primaryKey: true,
            allowNull: false
        }
    },{
        timestamps: false,
        freezeTableName: true
    }),
    l_d = sequelize.define('m_d',{
        id:{
            type: Sequelize.INTEGER,
            autoIncrement: true,
            primaryKey: true,
            allowNull: false
        }
    },{
        timestamps: false,
        freezeTableName: true
    });

main.belongsToMany(left,{through: m_l});
left.belongsToMany(main,{through: m_l});

data.belongsToMany(left,{through: l_d});
left.belongsToMany(data,{through: l_d});

module.exports = {
    left,
    main,
    data,
    m_l,
    l_d
}

маршруты

const express = require('express'),
    router = express.Router(),
    models = require('../models');

router.post('/view-content',(request,response)=>{
    models.db.data.findAll({
        include:[{
            model: models.db.left,
            where: {
                id: request.body.left
            },
            include:[{
                model: models.db.main,
                where: {
                    id: request.body.main
                }
            }]
        }]
    })
        .then(all=>{

        })
        .catch(err=>console.log(err));
});

module.exports = router;
...