我正在使用骨干关系来使用嵌套数据编写应用程序。数据结构的顶层包含大部分数据(以MB为单位),但从不用作独立项;它只用于充实其相关孩子的属性(飞重模式?)。
要将所有这些数据发送到浏览器,我正在使用类似以下数据结构的内容
records = [
{performerName: 'Jane', details: {composerName: 'Beethoven', ... }},
...
]
然后由两个模型Piece
和Performance
封装 - 两者都从Backbone.RelationalModel继承,但只有Performance
具有如下定义的关系
relations: [
{
type: 'HasOne',
key: 'piece',
relatedModel: 'Piece',
reverseRelation: {
key: 'performances'
}
}
],
然后可以直接从原始JSON构建表演集合。
这一切都很好,但问题是我要为每个Piece
发送几个数据副本(因为每个部分通常有几个性能)所以下载大小比它需要的大很多是
发送重量较轻的数据结构的最佳方式是什么(如下所示或其他一些避免大量复制的结构),但仍然需要相对轻松地创建我需要使用的表演集。
records = [
{composerName: 'Beethoven', ..., performances: [array of jsons, one for each performance]
...
]
答案 0 :(得分: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'
}
}
]
然后正常建立一个表演集和一个作品集