按型号ID列表获取骨干收集

时间:2012-11-21 10:45:33

标签: javascript rest backbone.js

我有一个REST API,提供几个URL:

/rest/messages

提供所有消息。消息是JSON / Backbone模型

{ 
  title: 'foo',
  body : 'bar'
}

要获得一条消息:

/rest/messages/:id

是否可以使用消息ID数组获取Backbone Collection?我不想要整个消息列表,只需要我通过ID指定的一些消息。

我可以逐个获取模型并填写集合,但我想知道Backbone是否有更简洁的方法来执行此操作。 感谢

2 个答案:

答案 0 :(得分:6)

根据documentation,您可以将ajax个选项传递给fetch来电。因此,您可以将ids作为data属性传递给正在完成的提取调用,并根据它,从服务器返回相应的模型。

例如(在获取时),

collection.fetch({
  data : {
    message_ids : [1, 3, 5] // array of the message ids you want to retrieve as models
  }
})

message_id数组将在parameters处执行的服务器代码中以/rest/messages(不确定您的名称)进行访问,从那里您只能返回特定模型基于您收到的ID为message_ids。您唯一需要的是,客户端必须了解所需的所有消息模型的ID。

您可以使用任何数据结构而不是数组来发送message_ids。

答案 1 :(得分:1)

集合的url属性引用服务器上的集合位置。当你使用fetch时,backbone使用该url url属性也可以是返回url的函数。所以你可以这样做:

var ids = [1,2,3]
var messages = new MessegecCollection();
messages.url = function() {
    return "/rest/messages/"+ids.join("-"); //results "/rest/messages/1-2-3"
}
messages.fetch();

您还可以在集合中创建生成和设置网址的方法,甚至可以获取一组模型。
现在你所要做的就是支持这个网址:/ rest / messages / 1-2-3

希望这有帮助!