我正在尝试构建一个api来创建一个骨干集合。我的模型名为log
并具有此(缩短的)属性(getLog/<id>
的格式):
{
'id': string,
'duration': float,
'distance': float,
'startDate': string,
'endDate': string
}
我需要创建一个集合,因为我有很多日志,我想在列表中显示它们。用于创建集合的api(getAllLogs
)需要30秒才能运行,这将会变慢。它返回与api getLog/<id>
相同的格式,但在数组中,数据库中每个日志的一个元素。
为了加快速度,我多次重建api并将其优化到极限,但现在我来到了30秒,这仍然很慢。
我的问题是,是否可以让集合中填充模型实例而不包含模型中的所有信息,只需显示列表所需的一部分。这将提高加载集合和显示列表的速度,而在后台我可以继续加载所有其他属性,或仅为我真正需要的元素加载它们。
在我的情况下,模型只会加载此信息:
{
'id': string,
'distance': float
}
以后可以加载所有其他属性。
我该怎么办?无论如何这是一个好主意吗?
感谢。
答案 0 :(得分:0)
执行此操作的一种方法是使用map
来获取缩短的模型。这样的东西会转换为Backbone.Collection
&#34;集合&#34;将所有属性设置为只有&#34; id&#34;和&#34;距离&#34;:
var shortCollection = new Backbone.Collection(collection.toJSON().map(function(x) {
return { id: x.id, distance: x.distance };
}));
Here's一个小提琴插图。