您可以使用 Sequelize.js 隐藏来自(非自动生成的)连接 table 的输出吗?

Can you hide output from a (not-automatically generated) join table using Sequelize.js?

我正在使用带有 Sequelize 作为 ORM 的 Feathersjs 后端框架。使用 Sequelize join tables 的 n:m 关系可以生成 'automatically' (从这里称为 'Approach A')与 belongsToMany 关联,但是我遵循了一个也提倡的替代方案方法 ('Approach B'),即明确定义连接 table 与 2 belongsTo 关联,并使用来自您要加入的两个 table 的 hasMany 关联联合table。

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

{
    "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 实现吗?

需要使用属性

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

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

方法 B 使用中间模型并使用 belongsTo。 sequelize 中没有任何特性(有点牵连到问题中)支持省略中间模型的输出(连接 table)。我浏览了sequelize代码,没有找到'such thing'。 Eric Katz 的教学视频(我在 m:n 上用 sequelize 找到了其中的 3 个)也没有显示这种方法。他只是简单地用 forEach 语句处理输出以获得他想要的输出。请参阅此图片的底部。

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