你能用Sequelize.js隐藏(非自动生成的)连接表的输出吗?

问题描述 投票:0回答:2

我正在使用Feathersjs后端框架和Sequelize作为ORM。使用n:m关系的Sequelize连接表可以使用belongsToMany关联“自动”(从此处称为“方法A”)生成,但是我遵循了一种主张的替代方法('方法B'),即明确定义连接表与2个belongsTo关联,并使用您要加入联合表的两个表中的hasMany关联。

这很好用。但是我的输出看起来像这样:

{
    "id": 1,
    "user_id": 2,
    "group_id": 1,
    "Venues": [
        {
            "id": 1,
            "capacity": "400",
            "venue_name": "Club Lotte",
            "venue_description": "Club in Rotterdam",
            "EmployeeVenues": {
                "employee_id": 1,
                "venue_id": 1
            }
        },
        {
            "id": 2,
            "capacity": "400",
            "venue_name": "Club Dino",
            "venue_description": "Club in Rotterdam",
            "EmployeeVenues": {
                "employee_id": 1,
                "venue_id": 2
            }
        }
    ]
} 

我希望它看起来像这样:

{
    "id": 1,
    "user_id": 2,
    "group_id": 1,
    "Venues": [
        {
            "id": 1,
            "capacity": "400",
            "venue_name": "Club Lotte",
            "venue_description": "Club in Rotterdam"
        },
        {
            "id": 2,
            "capacity": "400",
            "venue_name": "Club Dino",
            "venue_description": "Club in Rotterdam"
        }
    ]
}

使用Approach A this exact same issue can be solved using the through: { attributes: [] } in the query时。使用方法B也可以实现吗?

sequelize.js feathers-sequelize
2个回答
1
投票

需要使用属性

Model.findAll({
    attributes: ['foo'],
    include: {
        attributes: ['bar'],
        model: JoinModelName,
    },
});

http://docs.sequelizejs.com/manual/tutorial/querying.html


1
投票

方法B使用中间模型并使用belongsTo。 sequelize(问题中涉及的类型)没有任何功能支持省略中间模型(连接表)的输出。我浏览了续集代码并没有找到“这样的事情”。 Eric Katz的指导视频(我发​​现其中3个在m:n上有sequelize)也没有显示出这样的方法。他只是使用forEach语句处理输出以获得他想要的输出。请参见此图底部。

enter image description here

简而言之:方法B的续集中没有这样的特征。

© www.soinside.com 2019 - 2024. All rights reserved.