0

중첩 데이터를 사용하여 응용 프로그램을 작성하기 위해 백본 관계형을 사용하고 있습니다. 데이터 구조의 최상위 수준에는 대부분의 데이터 (MB 단위)가 포함되지만 독립형 항목으로는 사용되지 않습니다. 그것은 단지 관련된 아이들의 속성을 구체화하는 데 사용됩니다 (플라이 웨이트 패턴?). 백본 관계형을 사용하여 데이터 구조 반전하기

나는 다음과 같은 데이터 구조

records = [ 
    {performerName: 'Jane', details: {composerName: 'Beethoven', ... }}, 
    ... 
] 

같은 것을 사용하고 브라우저로 모든 데이터를 전송하려면 그리고 이것은 다음 두 가지 모델, PiecePerformance에 의해 캡슐화 - 모두 Backbone.RelationalModel 만에서 상속

relations: [ 
    { 
     type: 'HasOne', 
     key: 'piece', 
     relatedModel: 'Piece', 
     reverseRelation: { 
      key: 'performances' 
     } 
    } 
], 

다음 다음 공연 컬렉션 원래 JSON에서 직접 구축 될 수 Performance 정의 된 관계를 갖는다.

이 모든 것이 정상적으로 작동하지만 문제는 각 각의 데이터가 여러 개의 성능을 가지고 있으므로 각기 다른 크기의 데이터를 전송한다는 것입니다. 다운로드 크기가 훨씬 커질 수 있습니다.

가볍고 가벼운 데이터 구조 (아래와 같이 중복을 피하는 다른 구조와 같이)를 보내는 가장 좋은 방법은 무엇입니까? 아직 작업 할 필요가있는 공연 컬렉션을 비교적 쉽게 만들 수 있습니다.

records = [ 
    {composerName: 'Beethoven', ..., performances: [array of jsons, one for each performance] 
    ... 
] 

답변

0

나는 결국 이런 짓을하는 방법은 단지 공연 수집을 구축 모델을 다음의 관계

relations: [ 
    { 
     type: 'HasMany', 
     key: 'performances', 
     relatedModel: 'Performance', 
    includeInJSON: false, 
     reverseRelation: { 
      key: 'piece' 
     } 
    } 
] 
등을 정의하는 부분에서

var data = { pieces: [ 
       {tune_name: 'eidelweiss', ..., performances: [{id:23}, {id:52}]} 
       ... 
      ], 
      performances: [ array of performance jsons ] 
      }; 

로 데이터를 전송했다 그리고 평소처럼 조각 모음