从集合中获取特定的Backbone.js模型而不首先获取所有模型

时间:2014-03-10 23:46:17

标签: api backbone.js backbone-collections backbone-model

我是Backbone.js的新手。我很想知道您可以只为集合提供URL,然后继续创建,更新,删除和从该集合中获取模型,并处理与API的所有交互。

在我在网上看到的小型任务管理示例应用程序和众多演示中,似乎collection.fetch()用于从服务器下载所有模型,然后对它们执行某些操作。但是,通常情况下,在实际应用程序中,您不希望通过向API发出GET语句来提取数十万甚至数百万条记录。

使用带烘焙的connection.sync方法,如何为GET特定记录集指定参数?例如,我可能想要使用日期为2/1/2014的GET记录或由特定用户ID拥有的GET记录。

this question中,collection.find用于执行此操作,但这仍然会将所有记录下拉到客户端然后“找到”它们或知道collection.sync方法指定在对服务器进行GET时的参数?

3 个答案:

答案 0 :(得分:2)

您可以在服务器端实现某种分页,并使用有限数量的记录更新您的集合。在这种情况下,您的所有数据都将与后端保持同步。

您可以通过使用自己的实现覆盖fetch方法来执行此操作,或指定params 例如:

collection.fetch({data: {page: 3})

答案 1 :(得分:2)

您确实使用了抓取功能,但提供了collection.fetch([options])中的选项。

例如,获取id为myIDvar的一个模型:

collection.fetch(
{
    data: { id: myIDvar },
    success: function (model, response, options) { 
        // do a little dance;
    }
};

我的随意回忆是find,findWhere和where会调用正在下载的所有模型,然后在客户端上进行过滤。我相信使用fetch过滤会在服务器端进行。

答案 2 :(得分:0)

你也可以使用find where where here

collection.findWhere(attributes)