ネストされたデータを使用してアプリを作成するために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]
...
]