sequelize不包括关联模型数据中的联结表

时间:2017-12-01 03:33:28

标签: javascript sql node.js postgresql sequelize.js

假设我有2个型号,用户和事件。它们设置为m:m关系User.belongsToMany(Event)Event.belongsToMany(User)。这一切都很好,但是当我做User.findAndCountAll({include: [{model: Event}]})时,result.rows的结果json看起来像

[
    ...
    {
        userdata...,
        events: [ // included by model relation
        ...included event data...,
        junction_table: { // I dont want this data sent back to client, just above data
            ...data i dont want...
        }
    }
...
]

我想要

[
    {
    userdata...,
    events: [
        { included event data without junction_table }
    ]
    }
]

有没有办法剥离出于某种原因自动包含在每个事件中的junction_table,而没有.mapping数据并重建它?我宁愿不把所有这些我不需要通过电汇发送到客户端的数据发送给客户。我只尝试在模型上指定attributes: [],但它不会消失。

2 个答案:

答案 0 :(得分:2)

根据此SO question,可以通过指定您不希望“通过”表属性来实现。

您的情况应该是:

User.findAndCountAll({
    include: 
        [{model: Event, through: { attributes: [] }}]
    });

答案 1 :(得分:0)

SELECT *
FROM a
JOIN b ON EXISTS
        ( SELECT * FROM junction j
        WHERE j.a_id = a.a_id
        AND j.b_id = b.b_id
        );

仅当联结表在{a_id , b_id}上唯一时才有效 ,a_idb_idab的主键。