1

我有一个 node.js 后端使用 express-resource 来管理我的猫鼬模型。

我有一个 MarionetteJS 前端。

我的示例中的两个对象是组织和项目。

我的服务器将资源连接到类似的 uriexample.com/api/v1/organization/12/project

当我从 mongodb 为它们提供服务时,这些 id 是独一无二的。如果我只做就行了../project/2

但是要接收组织内的项目,由于无国籍,我只能做第一个。

我现在在客户端有 Backbone 模型。我确定这样的基本 urlapi/v1/organization工作正常,但我怎样才能获得组织的项目?我是否必须创建一个带有基本 url 的新模型api/v1/organization/:orgId/project

我该怎么做呢?

我希望你能理解我想说的话,任何帮助表示赞赏!

4

1 回答 1

1

你可以这样做:

var ProjectModel = Backbone.Model.extend({
   initialize: function(attrs, options) {
       if( options && options.organizationId){
          this.urlRoot = 'example.com/api/v1/organizations/' + options.organizationId + '/projects';
       }
   }
});

var ProjectCollection = Backbone.Collection.extend({
   initialize: function(models, options) {
       this.url = 'example.com/api/v1/organizations/' + options.organizationId + '/projects';
   },
});

// fetch one single project, not in a collection
var model = new ProjectModel({id: 4}, {organizationId: 7});
model.fetch();

// fetch all projects
var collection = new ProjectCollection(null, {organizationId: 7});
collection.fetch();

当模型在集合中时,它不需要urlRoot,因为 Backbone 将使用模型的集合url作为基础。

于 2013-02-16T09:48:23.540 回答