0

ネストされたデータを使用してアプリを作成するためにbackbone-relationalを使用しています。データ構造の最上位には、ほとんどのデータ(MB単位)が含まれていますが、スタンドアロンアイテムとして使用されることはありません。これは、関連する子の属性を具体化するためにのみ使用されます(フライウェイトパターン?)。

このすべてのデータをブラウザに送信するには、次のデータ構造のようなものを使用しています

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

そして、これは2つのモデルによってカプセル化され、Piece両方ともBackbone.RelationalModelから継承されますが、次のように定義された関係Performanceのみがあります。Performance

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

次に、パフォーマンスコレクションを元のJSONから直接構築できます。

これはすべて正常に機能しますが、問題は、データのコピーをそれぞれに送信しているためPiece(通常、各ピースには複数のパフォーマンスがあるため)、ダウンロードサイズが必要以上に大きくなっていることです。

軽量のデータ構造(以下のように、または大量の重複を回避する他の構造)を送信し、それでも作業する必要のあるパフォーマンスコレクションを比較的簡単に作成するための最良の方法は何ですか。

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

1 に答える 1

0

私が最終的にこれを行った方法は、データを次のように送信することでした

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

ピースモデルでは、次の関係を定義します

relations: [
    {
        type: 'HasMany',
        key: 'performances',
        relatedModel: 'Performance',
    includeInJSON: false,
        reverseRelation: {
            key: 'piece'
        }
    }
]

その後、通常どおりパフォーマンスコレクションとピースコレクションを作成します

于 2012-10-29T20:34:33.100 に答える