Разбор модели и ассоциации hasMany из необработанного запроса - PullRequest
0 голосов
/ 04 марта 2020

заранее спасибо за вашу hepl.

У меня есть две модели Menu и Window с их ассоциациями

db.menus.hasMany(db.windows);
db.windows.belongsTo(db.windows);

Я пытаюсь сделать запрос плоскости с выводом, подобным этому :

'menu':
{'description':'Menu 1',
     "windows": [
                  {"description": "windows 1"},
                  {"description": "windows 2"},
                  {"description": "windows 3"},      
                ]
}

Когда я ставлю ассоциацию hasOne вместо hasMany, по крайней мере, windows находится внутри меню, но со строкой для каждого windows, но с hasMany информация включается как часть меню , и я хочу объект windows.

const options = {
        model: db.menus,
        // mapToModel: true,
        // hasJoin: true,
        include: [{
            model: db.ventanas
        }]
    };
    db.menus._validateIncludedElements(options);
    db.sequelize.query(Query, options)
        .then(MenuWindows => {
            console.log(MenuWindows);
        });

Я доказал множество убеждений, но никто не работает должным образом, и мне интересно, есть ли что-то, что Я не сделал, как я уже сказал, когда я поставил ассоциацию hasOne , опция hasJoin работает иначе, что дает мне эту ошибку Необработанное отклонение TypeError: Cannot read property 'model 'of undefined

Кстати, с findAll секвелизация работает нормально, но я делаю сложный запрос с большим количеством таблиц, но просто показываю меню и windows, поэтому Я предполагаю, что ассоциация n в порядке, и проблема в том, как я отображаю вывод

Ответы [ 2 ]

1 голос
/ 04 марта 2020

После тысячи попыток все заработало, просто поместив псевдоним таблицы в модель

        model: db.menus,
        as: 'menu',
        hasJoin: true,
        include: [{
            as: 'windows',
            model: db.windows
        }]
    };
    db.menus._validateIncludedElements(options);
    db.sequelize.query(query, options)
        .then(menuWindows => {
            console.log(menuWindows);
        }); ```
0 голосов
/ 04 марта 2020

вы пробовали это ...

return sequelize.query(/* query */, {
    nest: true,
    type: sequelize.QueryTypes.SELECT
});
...