我正在使用主链关系使用嵌套数据编写应用程序。数据结构的最高级别包含大多数数据(根据MB),但从未用作独立项目。它仅用于充实其相关儿童的属性(轻量级模式?)。
要将所有这些数据发送到浏览器,我正在使用以下数据结构之类的东西
records = [
{performerName: 'Jane', details: {composerName: 'Beethoven', ... }},
...
]
然后由两个模型Piece
和Performance
封装 - 两者都从Backbone.RelationalModel继承,但只有Performance
的关系定义为如下
relations: [
{
type: 'HasOne',
key: 'piece',
relatedModel: 'Piece',
reverseRelation: {
key: 'performances'
}
}
],
然后可以直接从原始JSON构建表演集。
这一切都很好,但是问题在于我要为每个Piece
发送几副数据副本(因为每件通常都有几个表演),因此下载尺寸比需要的大得多。p>发送更轻的重量数据结构的最佳方法是什么(如下或某些其他避免重复质量的结构),但仍具有相对毫无痛苦的我需要使用的表演收集的创造。
records = [
{composerName: 'Beethoven', ..., performances: [array of jsons, one for each performance]
...
]
我最终这样做的方式是将数据发送为
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'
}
}
]
,然后仅建立一个表演集和一个正常的作品集