我有一个REST API,提供几个URL:
/rest/messages
提供所有消息。消息是JSON / Backbone模型
{
title: 'foo',
body : 'bar'
}
要获得一条消息:
/rest/messages/:id
是否可以使用消息ID数组获取Backbone Collection?我不想要整个消息列表,只需要我通过ID指定的一些消息。
我可以逐个获取模型并填写集合,但我想知道Backbone是否有更简洁的方法来执行此操作。 感谢
答案 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
希望这有帮助!