2017-12-01 9 views
0

두 개의 모델, 사용자 및 이벤트가 있습니다. 이들은 m : m 관계 User.belongsToMany(Event)Event.belongsToMany(User)으로 설정됩니다. junction_table을 제거 할 수있는 방법이 있나요 내가sequelize 연관된 모델 데이터에 접합 테이블을 포함시키지 마십시오.

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

을 원하는이 모두 잘 작동하지만 내가 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... 
     } 
    } 
... 
] 

과 같은 몇 가지 이유 때문이다 그 데이터를 매핑하고 재 구축하지 않고 모든 단일 이벤트에 자동으로 포함됩니까? 차라리 항상 고객에게 전선을 통해 필요하지 않은 모든 데이터를 보내지 않을 것입니다. 모델에만 attributes: []을 지정하려고했지만 멀리 가지 않습니다.

+0

현재 내 작업 솔루션은 JSON.parse (JSON.stringify (sequelizeresults.rows))에 의해 POJO로 결과를 변환하고 클라이언트에 보내기 전에 각 이벤트에서 junction_table 속성을 삭제하도록 매핑하는 것입니다. –

답변

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_idab의 기본 키 인 상태 {a_id , b_id} 에 고유 한 경우에만 작동합니다.

+0

당신이 내 질문을 잘 모르겠다. sequelize 모델 관계를 통한 조인이 제대로 작동합니다. 문제는'b'는 접합 테이블의 데이터가있는 속성을 자동으로 포함하기 때문에 데이터 전송을 절약하기 위해 결과 집합에 포함되기를 원하지 않습니다. –

+0

글쎄, 이것은 평범한 SQL에서 the_result_set에 join_without_the_columns_from_the_junction_table__action_set_init_the_result_set에서이 작업을 수행하는 방법입니다. 어쩌면 프레임 워크가 비슷한 코드를 생성 할 수있는 방법을 찾을 수 있습니다. – joop