backbone.js:检索构建集合的较小版本的模型

时间:2014-02-24 20:38:30

标签: performance api backbone.js

我正在尝试构建一个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
}

以后可以加载所有其他属性。

我该怎么办?无论如何这是一个好主意吗?

感谢。

1 个答案:

答案 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一个小提琴插图。