簡體   English   中英

從原始查詢中解析模型和關聯 hasMany

[英]Parse model and association hasMany from a raw query

提前感謝您的幫助。

我有兩個模型 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否則會給我這個錯誤未處理的拒絕類型錯誤:無法讀取屬性未定義的“模型”

順便說一句,使用 findAll,sequelize 工作正常,但我正在使用更多表進行復雜查詢,但只顯示菜單和窗口,所以我推斷關聯很好,問題在於我映射輸出的方式

經過一千次嘗試,它只是將表的別名放入模型中

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

你有沒有試過這個...

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM