Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance backbone.js:检索构建集合的模型的较小版本_Performance_Api_Backbone.js - Fatal编程技术网

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

Performance backbone.js:检索构建集合的模型的较小版本,performance,api,backbone.js,Performance,Api,Backbone.js,我正在尝试构建一个api来在主干中创建一个集合。我的模型名为log,具有以下(缩短的)属性(格式为getLog/): 我需要创建一个集合,因为我有很多日志,我想在列表中显示它们。用于创建集合的api(getAllLogs)需要30秒才能运行,这会减慢运行速度。它返回的格式与apigetLog/相同,但在一个数组中,数据库中的每个日志对应一个元素 为了加快速度,我多次重建api并将其优化到极限,但现在我达到了30秒,这仍然很慢 我的问题是,是否有可能在一个集合中填充一个模型的实例,而不包含该模型中

我正在尝试构建一个api来在主干中创建一个集合。我的模型名为
log
,具有以下(缩短的)属性(格式为
getLog/
):

我需要创建一个集合,因为我有很多日志,我想在列表中显示它们。用于创建集合的api(
getAllLogs
)需要30秒才能运行,这会减慢运行速度。它返回的格式与api
getLog/
相同,但在一个数组中,数据库中的每个日志对应一个元素

为了加快速度,我多次重建api并将其优化到极限,但现在我达到了30秒,这仍然很慢

我的问题是,是否有可能在一个集合中填充一个模型的实例,而不包含该模型中的所有信息,只是显示列表所需的一部分。这将提高加载集合和显示列表的速度,而在后台我可以继续加载所有其他属性,或者只加载我真正需要的元素

在我的情况下,模型将仅加载以下信息:

{
    'id': string, 
    'distance': float
}
所有其他属性都可以稍后加载

我怎么做?这是个好主意吗


谢谢

一种方法是使用
map
获得缩短的模型。类似这样的操作会将具有所有属性的
主干.Collection
集合“Collection”转换为仅具有“id”和“distance”的集合:


一幅精美的插图。

如果可以在模型中填充模型实例,而不包含模型中的所有信息,那么当然可以。为什么不呢?你能给我举个例子吗?我现在没看到。。。谢谢你到底想做什么?你想先得到短模型,然后让每个模型加载它自己的数据吗?@McGarnagle我现在明白你的意思了。。。经过一段时间的努力,我终于理解了主干中集合和模型的本质。当然有可能!!!啊!如果getAllLogs需要30秒,而你的应用程序需要30秒多一点,那么在主干中删除字段如何加快应用程序的速度?您需要重新编写API来过滤结果或对结果进行分页,以便可以立即开始加载数据块。
{
    'id': string, 
    'distance': float
}
var shortCollection = new Backbone.Collection(collection.toJSON().map(function(x) { 
    return { id: x.id, distance: x.distance };
}));