首页 > 解决方案 > 从原始查询中解析模型和关联 hasMany

问题描述

提前感谢您的帮助。

我有两个模型 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 时,至少窗口位于菜单内,但每个窗口都有一行,但使用 hasMany 时,信息被包含在菜单中,我想要一个窗口对象。

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工作,否则给我这个错误Unhandled reject TypeError: Cannot read property未定义的“模型”

顺便说一句,使用 findAll 续集工作正常,但我正在使用更多表进行复杂查询,但只显示菜单和窗口,所以我推断关联很好,问题在于我映射输出的方式

标签: javascriptmysqlnode.jsexpresssequelize.js

解决方案


经过一千次尝试,它只是将表的别名放入模型中

        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);
        }); ```

推荐阅读