2013-02-16 79 views
1

我有一個node.js後端使用express-resource來管理我的貓鼬模型。骨幹/木偶模型URL鏈接

我有一個MarionetteJS前端。

我的例子兩個對象是組織和項目。

我的服務器concats像example.com/api/v1/organization/12/project

的ID是唯一的,因爲我從MongoDB的爲他們服務的資源的URI。它會工作,如果我只../project/2

但接受組織內的項目,我只能做第一個因爲無國籍。

我現在在客戶端有Backbone模型。我確定一個基本網址,如api/v1/organization,這工作正常,但我怎樣才能得到一個組織的項目?我是否必須創建一個基本網址爲api/v1/organization/:orgId/project的新模型?

我該怎麼做?

我希望你能明白我想說什麼,感謝任何幫助!

回答

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,因爲骨幹網將使用模型的集合的url爲基礎。

+0

我想我可以用這種方式創建一個集合,但我如何將它們結合起來,因爲如果我有一個關聯模型的集合,這個模型不適合或者我錯了? – pfried 2013-02-16 09:53:45

+0

你將有一個項目集合?讓我更新它。 – 2013-02-16 09:56:52

+0

會很好的一些意見 – pfried 2013-02-16 09:57:52