0

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

/rest/messages

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

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

要获得一条消息,我有:

/rest/messages/:id

是否可以使用消息 ID 数组获取主干集合?我不想要整个消息列表,而只想要我按 ID 指定的几条消息。

我可以一个接一个地获取模型并填充集合,但我想知道 Backbone 是否有更清洁的方法来做到这一点。谢谢

4

2 回答 2

6

根据文档,您可以将ajax选项传递给fetch调用。因此,您可以将ids属性传递data给正在完成的 fetch 调用,并基于它从服务器返回相应的模型。

例如(在进行获取时),

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。

于 2012-11-21T11:33:30.300 回答
1

集合的 url 属性引用服务器上的集合位置。当您使用 fetch 时,主干使用该 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();

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

希望这可以帮助!

于 2012-11-21T13:37:29.923 回答