2016-07-21 4 views
4

시나리오 우리는 다음과 같은 관계를 매핑하는 데이터베이스가

:Normalizr을 사용하여 Redux 상태 내에서 many-to-many 관계를 어떻게 평평하게 할 수 있습니까?

  • tag는이 많은 campaigns
  • campaign는이 많은 tagscampaignstags의 관계는 연관에 의해 표현된다
  • 엔티티라고하는 엔티티 campaign_tag
  • campaign_tag 엔티티는 priority 속성이

질문

우리는 우리의 연관 기관이 고유 ID가없는 경우에, 우리의 연관 엔티티를 차지하고 평평 응용 프로그램 상태를 생성하는 normalizr (또는 유사한 라이브러리)를 구현 수있는 방법/값? 내가 본

노트/기타 생각

다른 예는 원래 실체가 밖으로 매핑 및 일대 다 또는 일대일 관계를 더 적합한 것 같습니다했다. 그들은 일반적으로 이와 같은 상태 트리를 제작 :

{ 
    entities: { 
    campaigns: { 
     '1': { id: 1, name: 'Ace', tags: [1, 2, 3] }, 
     ... 
    }, 
    tags: { 
     '1': { id: 1, name: 'Example Tag', campaigns: [1, 2, 3] }, 
     ... 
    } 
    }, 
    ... 
} 

우리의 연관 엔티티가 entities 그룹에 가시겠습니까? 고유 ID를 추가해야합니까? 그것은 비생산적인 것으로 보인다. 그러한 관계를 평평하게하는 것이 적절한가?

감사합니다. 감사합니다.

답변

1

시나리오 :

  1. 당신은 API를 제어 :이 같은 개체를 보내드립니다 :

    campaigns: [{ 
        id: <id>, 
        name: <name>, 
    }], 
    tags: [{ id: <id>, name: <name> }], 
    campaign_tags: [{campaign_id, tag_id, priority}] 
    

    그래서이 관리하고 정보의 중복을 피하기 위해 쉬울 것이다. redux connect를 사용하여 구성 요소를 탑재 할 때 구성 요소의 속성에 추가 할 캠페인 태그를 채우기위한 선택자를 만들 수 있습니다.

  2. API를 제어하지 않습니다. 이 경우 뭔가를 추천하기 위해 서버에서 어떤 응답 유형을 얻고 있는지 알아야합니다.